这些线路在做什么?

时间:2010-04-29 22:25:03

标签: javascript functional-programming

我开始学习一个项目的javascript,我找到了一个脚本,它完成了我需要做的一部分,我想知道它是如何工作的,对我来说都需要它修改。

最初它是在页面内部使用的,现在我已将它自己放在一个文件中并且不再起作用,所以我将它分成几部分,因为我无法完成整个事情。
这就是现在最困扰我的事情:

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

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

2)不知道这里发生了什么

var VARIABLE = VARIABLE || {};

3)我在这里定义了methodCall的实现吗?像在Java中覆盖一个方法的东西?

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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:10)

1)创建一个未命名的函数并执行它。这对于为函数外部不可见的局部变量创建范围很有用。除此之外你不需要调用它,最后的'()'为你做了。

2)如果变量为null / undefined,则将其设置为空对象。

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

在回复您的评论时,这是一个常见的例子

function foo (VARIABLE)  {
   var VARIABLE = VARIABLE || {};
}

答案 1 :(得分:3)

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

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

function() { }表示法称为闭包,它允许变量为函数。例如,

(function() { })()是一种常见的JavaScript习惯用法。在)之后,有(),它在函数之前调用表达式,so (callback || function(x) { return x; })(x)是允许的。

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

var VARIABLE = VARIABLE || {};使用短路OR,如果未定义VARIABLE,则VARIABLE将设置为{},即空对象。 (否则,如果存在VARIABLE,则不会更改)

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

正如您所说,

VARIABLE.methodCallmethodCall添加到VARIABLE,而不删除VARIABLE

中的其他值