开发者

What is the difference between globally declaring a function and using window.myfunc = myfunc

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜