Javascript全局变量var与不var的区别深入解析
来源:互联网 发布:关联规则推荐算法 编辑:程序博客网 时间:2024/05/14 11:30
这篇文章主要介绍了Javascript全局变量var与不var的区别。需要的朋友可以过来参考下,希望对大家有所帮助
相信你对全局变量一定不陌生,在函数作用域里用a=1这种形式定义的变量会是一个全局变量,在全局作用域里,用下面3种形式都可以创建对全局可见的命名:
代码如下:
<script>
var a = 1;
b = 2;
window.c = 3;
</script>
对于b=2这种方式, 它其实和c是一样的,在执行这个赋值语句的时候,会沿着作用域链寻找名字叫做b的变量,一直找到作用域链的顶端还没有找到,于是给window添加一个属性b然后赋值。
var与不var有两个区别:
1 var的全局变量不能被删除,因为delete智能删除对象的可删除的属性,而通过var 定义的全局属性会被标明不可删除。需要说明的是,delete不成功并不会抛错,delete的返回值是true|false。
2 var定义的全局变量会被提升,而不用var定义的全局变量不会被提升。可以看下面程序的执行结果:
代码如下:
<script>
alert(a);
var a=1;
</script>
代码如下:
<script>
alert(a);//error, a undefined
a=1;
</script>
相信你对全局变量一定不陌生,在函数作用域里用a=1这种形式定义的变量会是一个全局变量,在全局作用域里,用下面3种形式都可以创建对全局可见的命名:
代码如下:
<script>
var a = 1;
b = 2;
window.c = 3;
</script>
对于b=2这种方式, 它其实和c是一样的,在执行这个赋值语句的时候,会沿着作用域链寻找名字叫做b的变量,一直找到作用域链的顶端还没有找到,于是给window添加一个属性b然后赋值。
var与不var有两个区别:
1 var的全局变量不能被删除,因为delete智能删除对象的可删除的属性,而通过var 定义的全局属性会被标明不可删除。需要说明的是,delete不成功并不会抛错,delete的返回值是true|false。
2 var定义的全局变量会被提升,而不用var定义的全局变量不会被提升。可以看下面程序的执行结果:
代码如下:
<script>
alert(a);
var a=1;
</script>
代码如下:
<script>
alert(a);//error, a undefined
a=1;
</script>
0 0
- Javascript全局变量var与不var的区别深入解析
- Javascript全局变量var与不var的区别
- Javascript全局变量var与不var的区别
- var 与 不var 的区别
- javascript var声明变量与不声明的区别
- javascript定义全局变量的时候有var和没有var的区别
- javascript: 全局变量与局部变量,var关键字
- 你不知道的JavaScript--Item6 var预解析与函数声明提升(hoist )
- 你不知道的JavaScript--Item6 var预解析与函数声明提升(hoist )
- JavaScript中定义变量加var和不加var的区别
- JavaScript定义变量是加var和不加var的区别
- JavaScript中声明变量时 带var和不带var的区别
- js中var声明和不加var的区别
- js加var和不加var的区别
- js中加【var】和不加【var】的区别
- js中加“var”和不加“var”的区别
- js中加“var”和不加“var”的区别
- js中加“var”和不加“var”的区别
- WolframAlpha
- java NIO(转)
- 常见算法笔试或面试题
- 快速排序法(一)
- 自动释放池autoreleasepool
- Javascript全局变量var与不var的区别深入解析
- pushlet实现服务器推送
- Action<T>泛型委托
- Http异常eurl.axd出错信息解决方法
- Qt工作历程-引言
- 关于MX3在XP系统下正常使用磁盘功能的小窍门
- 如何在多台机器上共享IOS证书
- Windows 8 Metro app开发初体验
- Timer