在javascript中,我们通常可以使用如下两种方式定义函数:
方式一:
var fun = function(){
//code
};
方式二:
fun(){
//code
}
由于javascript的"声明提前(hoiosting)",加载js代码后,方式二中fun被"提前",此时fun已经是一个Function;但是方式一种的fun在刚加载js时却是undefined,function()代码块中的具体内容需要等到调用的时候才会初始化。这就导致使用方式二会导致js作用域污染。所以the Google style guide 推荐使用方式一。
具体实例如下:
a(); // 2 js作用域被污染
function a() {
alert('1');
}
a(); // 2 js作用域被污染
function a() {
alert('2');
}
a(); // 2
var a = function() {
alert('3');
};
a(); //3