浅谈JavaScript中定义变量时有无var声明的区别


Posted in Javascript onAugust 18, 2014

前段时间回答了一个关于定义变量时使用关键字var与否的区别,总结回顾一下。

1.在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量。
使用var定义:

var a = 'hello World';
function bb(){
 var a = 'hello Bill';
 console.log(a);  
}
bb()      //'hello Bill'
console.log(a);  //'hello world'

不使用var定义:

var a = 'hello World';
function bb(){
 a = 'hello Bill';
 console.log(a);  
}
bb()      //'hello Bill'
console.log(a);  //'hello Bill'

2.在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。

3.使用var 定义变量还会提升变量声明,即
使用var定义:

function hh(){
 console.log(a);
 var a = 'hello world';
}
hh()      //undefined

不使用var定义:

function hh(){
 console.log(a);
 a = 'hello world';
}
hh()      //'a is not defined'

这就是使用var定义的变量的声明提前。

4.在ES5的'use strict'模式下,如果变量没有使用var定义,就会报错。

Javascript 相关文章推荐
Auntion-TableSort国人写的一个javascript表格排序的东西
Nov 12 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
Mar 05 Javascript
javascript页面动态显示时间变化示例代码
Dec 18 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
Jun 09 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
Mar 25 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
Apr 01 Javascript
AngularJS基础 ng-class-odd 指令示例
Aug 01 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
jQuery Validate 校验多个相同name的方法
May 18 jQuery
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
vue实现户籍管理系统
May 29 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
Aug 18 #Javascript
使用node.js半年来总结的 10 条经验
Aug 18 #Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
Aug 18 #Javascript
根据当前时间在jsp页面上显示上午或下午
Aug 18 #Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 #Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
Aug 18 #Javascript
jquery中$(#form :input)与$(#form input)的区别
Aug 18 #Javascript
You might like
菜鸟学PHP之Smarty入门
2007/01/04 PHP
php 文件上传类代码
2011/08/06 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
javascript深入理解js闭包
2010/07/03 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
js表单序列化判断空值的实例
2017/09/22 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
vue配置多页面的实现方法
2018/05/22 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
跟老齐学Python之再深点,更懂list
2014/09/20 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python监控nginx端口和进程状态
2019/09/06 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
医学检验专业大学生求职信
2013/11/18 职场文书
实习护士自荐信
2014/06/21 职场文书
安全先进个人材料
2014/12/29 职场文书
2015年领班工作总结
2015/04/29 职场文书
预备党员入党感言
2015/08/01 职场文书
python处理json数据文件
2022/04/11 Python