标签:
没事看了一下js的匿名函数,有个随处可见的名言匿名函数不会污染全局变量,中国汉字博大精深,污染这个词实在是让我费解,于是小测一把,记录如下:
在函数中没有重新定义同名变量的情况下,匿名函数与普通函数一样,都是可以访问全局变量的。
var a = 1; (function(){ a = 2; })(); console.log(a);//输出2 function ssddd(){ a = 3; } ssddd(); console.log(a);//输出3
2.在两种函数中定义的变量都不会影响到全局变量的值
var a = 1; (function(){ var a = 2; })(); console.log(a);//输出1 function ssddd(){ var a = 3; } ssddd(); console.log(a);//输出1
3.匿名函数因为没有函数名,也就没有函数名冲突问题,不会影响到全局函数,在js中,变量与函数没啥界限,都是对象,污染全局变量估计指的就是不会覆盖原有函数。经过一层层包装的类型不堪深究,还是C语言定义个int给2字节空间的时代比较单纯。
标签:
原文地址:http://my.oschina.net/u/861926/blog/420549