JS变量作用域问题
2016-10-23 18:49
260 查看
案例1:
1.输出原因:未调用test1(),使得var a= 2,未运行.所以输出结果为1.
案例2:
2.此处调用了函数test2,1),输入结果为:1 ,因为 var a= 2 是在函数体test2()内定义的,在JavaScript中,变量的作用域为函数体,故,此处a=2的,对函数外部无影响.
案例3:
3.此处输出结果为: 2, 因为这里test3内部并未重新定义c,而是直接给c赋值,被赋值的c寻找下看改变了哪个c的值,发现函数内部再无c,就扩大范围到函数外面寻找(变量提升),直接把最开始的c值改变.
案例4:
4.此处,函数体test4的内部输出2,外部输出1,比案例3多了传参,还是变量提升问题,test4内部的d被赋值后,先在函数test4内部寻找d,找到参数d,停止继续寻找.在test5中,f在函数内部找不到f,向外寻找f,改变f的值为2.
var a = 1; function test1(){ var a = 2; } console.log("a = " + a);//== 1
1.输出原因:未调用test1(),使得var a= 2,未运行.所以输出结果为1.
案例2:
var b = 1; function test2(){ var b = 2; } test2(); console.log("b = " + b);//==1
2.此处调用了函数test2,1),输入结果为:1 ,因为 var a= 2 是在函数体test2()内定义的,在JavaScript中,变量的作用域为函数体,故,此处a=2的,对函数外部无影响.
案例3:
var c = 1; function test3(){ c = 2; } test3(); console.log("c = " + c);//==2
3.此处输出结果为: 2, 因为这里test3内部并未重新定义c,而是直接给c赋值,被赋值的c寻找下看改变了哪个c的值,发现函数内部再无c,就扩大范围到函数外面寻找(变量提升),直接把最开始的c值改变.
案例4:
var d = 1; function test4(d){ d = 2; console.log("d = " + d)//==2 } test4(d); console.log("传参d后 :d = "+d);//==1
var f = 1; function test5(e){ f = 2; } test5(f); console.log("传参f后: f = " + f);//==2
4.此处,函数体test4的内部输出2,外部输出1,比案例3多了传参,还是变量提升问题,test4内部的d被赋值后,先在函数test4内部寻找d,找到参数d,停止继续寻找.在test5中,f在函数内部找不到f,向外寻找f,改变f的值为2.
相关文章推荐
- JS高级程序设计4-变量、作用域、和内存的问题
- 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题
- js变量作用域和内存问题
- JS变量作用域的问题
- JS变量、作用域、内存问题(摘至javaScript高程3)
- js变量声明以及作用域的问题
- [JAVA]变量作用域的问题
- 注意细节 js变量作用域
- 变量作用域应该注意的问题
- 注意细节js变量作用域
- Awk 中变量作用域的问题
- SQL中declare变量的作用域(续)-----一些问题
- 对JS变量作用域的通俗理解
- 在js中使用"with"语句中跨frame的变量引用问题
- 有关js的变量作用域和this指针的讨论
- 有关js的变量作用域和this指针的讨论
- JavaScript的变量作用域问题
- Javascript中的变量作用域问题
- js变量作用域及可访问性的探讨