js变量"隔壁老王"this
先看一段代码
<script> var a = 10; var b = 20; function fun() { var a=20;c=30; //this.c=30; // console.log(this); Window alert(a+=b+c); } fun();//70 console.log("a:"+a+" b:"+b+" c:"+c); //a:10 b:20 c:30 </script>
其实这段代码只是说明变量、局部变量作用域的问题.
但为什么在函数内不用var 声明的变量就是全局变量呢?
因为有隔壁老王this啊(你不在我帮忙,我住隔壁我姓王!).
当声明变量的时候如果不用var,变量就会继承this的作用域.
在一个函数中不用var定义'好像'一定就是全局的。
那就看一下在类中的情况。
<script> var name = "The window"; var object = { name : "My object", Func : function(){ c = 20; console.log(this); //object aa = function() { a = 20; console.log(this); //window } return aa(); } } console.log(a);//a is not defined! alert(object.Func()); </script>
在类中不用var,声明的变量就不是全局的!