标签:声明 javascript 局部变量 全局变量 var
最近见群里有一道关于面试的试题,考察的关于全局变量和局部变量的基础知识:
fun foo(){
var a = b = 0;
}
让选择a和b的值分别为多少,或许不仔细看,我们很可能把a和b都当成了局部变量,值为0,其实a是局部变量,b是全局变量,这主要是由于从右至左的操作符优先级,跟我们平时在的css选择器在浏览器中解析的优先级别一样,优先级别较高的是表达式b=0,此时b未经声明,表达式的返回值为0,它被赋给var声明的局部变量a,如下表示:
var a = (b = 0);
如果对链式赋值的所有变量都进行了声明,就不会创建出不期望的全局变量,例如
function foo(){
var a,b;
a= b =0; //二者均为局部变量
}
使用var创建的全局变量(这类变量在函数外部创建)不能删除;
不使用var创建的隐含的全局变量(尽管在函数内部穿件的),可以删除;
虽然变量声明可以在文档任意位置,但是良好的习惯应该是在所有JavaScript代码之前声明变量,并对变量进行初始化赋值。在函数内部也是先声明变量,然后再引用。
变量查询中,访问局部变量要比全局变量更快,因为不需要向上搜索作用域链,局部变量在函数执行完毕的时候会自动清除销毁,不占用内存,而全部变量只有窗口页面关闭的时候,才自动销毁,所以我们平时尽量用局部变量,减少全局变量,减少环境污染
标签:声明 javascript 局部变量 全局变量 var
原文地址:http://blog.csdn.net/lfcss/article/details/45048447