关于JS变量

来源:互联网 发布:比特币交易 知乎 编辑:程序博客网 时间:2024/06/07 23:00

刚在百度前端网上看了一个JS笔记,里面有一个关于var变量的代码,起初没能理解,所以在理解之后在此分享

{   var a = "abc";   var b = 1;   c = 2;   function test(){        alert(a);        alert(b);        alert(c);        var a = "bcd";        b = 2;        c =3;        alert(a);        alert(b);        alert(c);    }}

第一次输出的a,b,c的值和第二次输出的a,b,c的值分别会是什么呢?依次应该是:abc,1,2,bcd,2,3。对不对呢?!(@_@)其实那是不对的!正确的答案应该是undefined,1,2,bcd,2,3。下面我就来说一下我想的和它显示的为什么不一样~

原因是这样子滴,test()函数外边定义的a,b,c 均为全局变量,而test()函数内部由定义了局部变量a,b,c,之所以第一个a输出的结果不是我想象中的 abc ,而是undefined,是因为,在函数内部也定义了a使其成为局部变量,所以它会先从函数内部也就是距离自己最近的地方开始解析寻找初始化语句,然而函数内部的初始化语句在输出变量之后,所以它会认为并没有给此变量初始化,自然会默认为undefined了;但是之后的a,b,c均会照常输出,是因为它们的初始化和输出就是正常的顺序并且存在在函数内部,所以会正常解析。

0 0
原创粉丝点击