js立即执行函数问题
在网上看了很多例子说立即执行函数是为了避免污染全局变量,防止外部修改模块里的变量,例如:
var MyString = function(str){
this.content = str;
};
var name = new MyString("hanMeimei");
var addr = new MyString("China");
console.log(name.content + " live in " + addr.content);
在该例子中实际上name是window对象里的属性,但是Window对象原来就包含了name的属性,为了避免这样的问题出现,可以采用立即执行函数
(function(){
var name = new MyString("hanMeimei");
console.log(name.content); //正确,输出hanMeimei
})();
我觉得直接这样就行了
function(){
var name = new MyString("hanMeimei");
console.log(name.content); //正确,输出hanMeimei
}
也可以避免上述问题,为什么需要使用立即执行函数