您的位置:首页 > Web前端 > JavaScript

Javascript 作用域

2014-06-23 18:44 183 查看
  Javascript的作用域并不像想象中的简单,一开始的时候我都懒得去认真了解关于这方面的介绍,除了注意全局变量和局部变量定义时都要加上 var ,其他的总想着跟强类型语言差不多,而且在实践中也没有发现什么问题,现在抽空对这方面做一些总结,希望以后减少在这方便所犯的错误。

全局变量和局部变量,无论在哪都要用 var 声明所需要的变量,否则变量的作用域就会扩散至全局。

错误的方式:  

function test(){
a = 2;//作用域是全局
}
console.log(a);//2


正确的方式:

function test(){
var a = 2;//作用域是函数内
}
console.log(a);//undefined


小心局部变量,方法内部要尽量在开头定义你需要的变量。

错误的方式:

var a = 1;
function test(){
console.log(a); //undefined,函数内部,a 在下一句被重新定义,它覆盖了函数外的a,此时它在函数内部全局可见,但是在运行到当前语句时a还未赋值,所以它的值是undefined。
var a = 0;
}


正确的方式:

var a = 1;
function test(){
var a = 0;
console.log(a); //0,已经定义且赋值。
}


语句块中的变量,与java或者C不同,在JS中,语句块内定义的变量属于语句块所在的上下文!

function test(){
//这里的i是test函数的局部变量
for(var i = 0; i<10; i++){
if(true){
var j = i;// j 也是test函数的局部变量!
}
}
console.log(i);// 10
console.log(j);// 9
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: