先上两段代码。这两段代码均运行于html5的环境中。
代码一
<script>
var yourname="ITeYe";
myname="zhujiaojiao";
changeName();
function changeName(){
alert(yourname); //A
alert(myname); //B
}
</script>
代码二:
<script>
var yourname="ITeYe";
myname="zhujiaojiao";
changeName();
function changeName(){
alert(yourname); //C
alert(myname); //D
var yourname="beijibingshan";
myname="Fanny";
}
alert(yourname); //E
alert(myname); //F
</script>
其中A,B,C,D,E,F分别输出的结果是“ITeYe”,“zhujiaojiao”,“undefined”,“zhujiaojiao”,“ITeYe”,“Fanny”。
试问问题一:为什么A处和C处输出的结果不一样?
试问问题二:为什么E处输出结果还是最初的值,而F处输出的却不是?
可以总结出这样的观点:
原来,“var”定义的是作用域上的一个变量,而没有'var'的标识符却可能是全局跟对象的一个属性,当代码运行在全局作用域的时候,作用域就是跟对象window,所有,有没有“var”都无所谓。当然,不同的javascript执行引擎可能有不同的实现方式,但都可以大致这么来理解。
本文通过两个具体的HTML5环境下的JavaScript代码示例,探讨了变量声明中使用与未使用'var'关键字的区别,以及这种区别如何影响变量的作用域和生命周期。
269

被折叠的 条评论
为什么被折叠?



