代码之家  ›  专栏  ›  技术社区  ›  Alberto Zaccagni

这些线在干什么?

  •  4
  • Alberto Zaccagni  · 技术社区  · 15 年前

    我正在为一个项目学习JavaScript,我发现了一个脚本,它可以完成我需要做的部分工作,我想知道它是如何工作的,无论是对我还是在需要修改的情况下。

    最初它是在页面中使用的,现在我把它放在一个文件中,不再工作了,所以我把它分成了若干部分,因为我无法得到全部内容。
    以下是我目前最担心的事情:

    1)这是函数的声明吗?它叫什么名字?如何调用它?

    (function() {
        //some code
    })();
    

    2)不知道这是怎么回事

    var VARIABLE = VARIABLE || {};
    

    3)我是否定义了 methodCall 在这里?类似于Java中的方法吗?

    VARIABLE.methodCall = function(parameter) {
        console.log("parameter was: " + parameter);
    };
    

    提前感谢您的帮助。

    2 回复  |  直到 15 年前
        1
  •  10
  •   Jimmy    15 年前

    1)创建一个未命名的函数并执行它。这对于为函数外部不可见的局部变量创建范围很有用。除此之外,您不需要调用它,末尾的“()”将为您调用它。

    2)如果变量为空/未定义,则将其设置为空对象。

    3)是的,应该可以按预期工作,您可以调用variable.methodCall(参数)

    为了回应你的评论,这里有一个常见的例子

    function foo (VARIABLE)  {
       var VARIABLE = VARIABLE || {};
    }
    
        2
  •  3
  •   Ming-Tang    15 年前
    (function() {
        //some code
    })();
    

    简单运行 //some code ,但其中的变量将不会保留,因为 function() { } 块引入了一个新的内部范围。

    函数(){} 符号被称为闭包,它允许变量是函数。例如,

    (function() { })() 是一个常见的javascript习惯用法。后 ) () ,调用前面的表达式as函数, so (callback || function(x) { return x; })(x) 是允许的。

    var a = function a() { return 1; }

    var VARIABLE = VARIABLE || {}; 使用短路,或者,如果 VARIABLE 未定义, 变量 将被设置为 {} ,一个空对象。(否则,如果 变量 存在,不会改变)

    x = A || B 表示“如果a的计算结果为真,则x为a,否则x为b”。

    VARIABLE.methodCall 如你所说,补充道 methodCall 变量 ,而不删除中的其他值 变量