Javascript 作用域
2014-06-23 18:44
183 查看
Javascript的作用域并不像想象中的简单,一开始的时候我都懒得去认真了解关于这方面的介绍,除了注意全局变量和局部变量定义时都要加上 var ,其他的总想着跟强类型语言差不多,而且在实践中也没有发现什么问题,现在抽空对这方面做一些总结,希望以后减少在这方便所犯的错误。
全局变量和局部变量,无论在哪都要用 var 声明所需要的变量,否则变量的作用域就会扩散至全局。
错误的方式:
正确的方式:
小心局部变量,方法内部要尽量在开头定义你需要的变量。
错误的方式:
正确的方式:
语句块中的变量,与java或者C不同,在JS中,语句块内定义的变量属于语句块所在的上下文!
全局变量和局部变量,无论在哪都要用 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 }
相关文章推荐
- 简单javascript可以起到很大作用
- jsp与javascript结合用以处理confirm确认达到传递参数到另一个页面的作用
- Javascript !!的作用
- javascript中$符号的作用和用法
- javascript作用域
- Javascript作用域
- Javascript中的作用域(scope)
- Javascript作用域原理
- Javascript中的作用域(scope)
- Javascript里面的$符号的作用
- 面向对象的 Javascript 语言特性:作用域
- Javascript中的作用域(scope)是什么?
- JavaScript中的作用域(Scope in JavaScript)
- Javascript 作用域以及执行顺序
- 面向对象的 Javascript 作用域
- JavaScript中defer的作用
- javascript中top的作用
- Javascript中的$符号的作用!
- Javascript 作用域使用说明
- JavaScript 库作用及对比介绍