What is the difference between the following 2 ex开发者_JS百科amples of code:
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
and
var myFunc = (function(){
//do something
})();
The two ways are really similar, but there is a small difference on how the myFunc global variable is created.
In the second way, using the var statement, will create the myFunc variable as a non-deleteable property of the global object, the var statement explicitly sets the internal {DontDelete} attribute , e.g.:
var myFunc = (function(){
//do something
})();
delete window.myFunc; // false
While the first one can be deleted:
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
//...
delete window.myFunc; // true
If you try the above in Firebug, both can be deleted, thats because Firebug uses code evaluation (eval) in the console.
You can check the above example here.
Recommended article:
- Understanding delete
Semantically nothing. However, the first example you can have "private" functions that can make your code more readable.
Take this example:
(function(){
var helperFunc = function()
{
//do something else
}
var myFunc = function(){
//do something
helperFunc();
}
window.myFunc = myFunc;
})();
Cleaner code results in the hands of a good developer
加载中,请稍侯......
精彩评论