先了解一个技术问题:
i的作用域决定i=?
之所以要讲这个问题就是因为我们对这个知识点不了解或在编码的时候不在意,才会导致我们让这么多“死循环”发生。
<script type="text/javascript">
var objObj = {
vaa : function() {
var i = 0;
alert(i);
},
i : 2,
aa : function() {
i = 3;
}
}
alert(objObj.aa());// 1
alert(window.i);//2
alert(objObj.i);//3
objObj.vaa();//4
</script>
这里的i有三个作用域:
代码1,2是创建作用为全局的变量i,这个i 网页中所有的脚本包括引入的.js文件都共应这个变量i
代码3使用的是objObj这个对象的字段,即任何地方要使用这个i必须用objObj.i 才能引用到(当然objObj内部可以用this.i)
代码4使用的是objObj对象方法(函数)中的i,即 方法vaa中的i,这个i 再vaa中定义(注意一定要加上变量描述符var ,如果不加则表示定义全局变量i),其作用域只在vaa函数体内。