这个代码在Javascript中是什么?

时间:2011-09-28 17:50:54

标签: javascript jquery

在某些网站上的一些JS代码中,我看到了如下的Javascript代码:

SomeName.init = (function () {
    // some stuff
})();

我的意思是,这不是像这样的jQuery插件代码:

(function( $ ){
    $.fn.myPlugin = function() {

    // Do your awesome plugin stuff here

    };
})( jQuery );

那么,它是什么?什么是生成的JS对象?

4 个答案:

答案 0 :(得分:8)

这是一个匿名函数,在使用var声明变量时,它不会将变量泄漏到全局范围。

SomeName.init = (function () {
    return 3.1415;
})();

SomeName.init是一个数字(3.1415),因为匿名函数声明后的()执行该函数。除非在匿名函数中定义,否则无法获得原始函数:

(function foo(){
    //foo refers to this function
    too = foo;
})();;
//foo is undefined
//too refers to the function, because `too` has been defined without var

答案 1 :(得分:2)

Module Pattern。这两个片段的共同点比你想象的要多。

答案 2 :(得分:1)

(function () {
    // some stuff
})()

是一个匿名函数,可以立即调用自身。它只是围绕代码内部的一个闭包来阻止变量范围变为全局。

答案 3 :(得分:0)

无论函数返回什么。

(function() {
    //...
})();

用作命名空间代码的方法,或声明自执行构造函数。结果对象是自执行函数返回的任何内容。

第二个代码段不会返回任何内容,而且没有resulting JS object