以下2个代码示例有什么区别:
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
和
var myFunc = (function(){
//do something
})();
以下2个代码示例有什么区别:
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
和
var myFunc = (function(){
//do something
})();
这两种方式非常相似,但在myFunc
创建全局变量的方式上存在细微差别。
第二种方式,使用var
语句,将创建myFunc
变量作为全局对象的不可删除属性,var语句显式设置内部{DontDelete}
属性,例如:
var myFunc = (function(){
//do something
})();
delete window.myFunc; // false
虽然可以删除第一个:
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
//...
delete window.myFunc; // true
如果您在 Firebug 中尝试上述操作,都可以删除,那是因为 Firebugeval
在控制台中使用了代码评估 ( )。
您可以在此处查看上述示例。
推荐文章:
语义上没有。但是,第一个示例可以具有“私有”功能,可以使您的代码更具可读性。
举个例子:
(function(){
var helperFunc = function()
{
//do something else
}
var myFunc = function(){
//do something
helperFunc();
}
window.myFunc = myFunc;
})();
更简洁的代码交由优秀的开发人员使用