Javascript全局变量var与不var的区别深入解析

2013-12-09 55

相信你对全局变量一定不陌生,在函数作用域里用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>
展开阅读全文

更多Javascript文章

javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 40
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 54
关于删除时的提示处理(确定删除吗)
Nov 03 42
jquery表单验证框架提供的身份证验证方法(示例代码)
Dec 27 37
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
Jun 08 39
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 48
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 47
手机访问当前页面