3

这个 javascript 语句到底发生了什么:

var loadPrevious = (loadPrevious || function() {});

据我了解,变量 loadPrevious 要么是匿名函数,要么是值 loadPrevious

编辑:

好的,非常感谢您的回答和评论。但是为什么会有这样的声明:

var app;
loadPrevious(app = launchApplication($("#target"),0));

loadPrevious 在这里做什么?为什么要这样做?

4

4 回答 4

6

它检查是否已经为 loadPrevious 分配了一个值。如果没有,它会为其分配一个空函数。

此语法是 C++ 或 C# 三元语法的 javascript 等价物

var loadPrevious = loadPrevious != null ? loadPrevious : () => {}; 

例如,在 C# 中。

于 2012-10-11T22:39:23.773 回答
3

该代码正在检查是否loadPrevious已定义,如果未定义,则将其定义为匿名函数。

这种模式在您从多个不同位置向对象添加方法的情况下很有用,例如:

方法1.js:

var loadPrevious = (loadPrevious || function() {});
loadPrevious.prototype.method1 = function() { return 'method1'; };

方法2.js:

var loadPrevious = (loadPrevious || function() {});
loadPrevious.prototype.method2 = function() { return 'method2'; };

现在您可以包含这两个文件,并且 loadPrevious 将拥有这两种方法:

<script src="method1.js"></script>
<script src="method2.js"></script>
<script>
    var oLoadPrevious = new loadPrevious();
    oLoadPrevious.method1(); // "method1"
    oLoadPrevious.method2(); // "method2"
</script>
于 2012-10-11T22:46:06.697 回答
1

你是对的,loadPrevious除非它评估为假,否则它将是值,在这种情况下它将是空的匿名函数

于 2012-10-11T22:39:52.817 回答
1

这是一个或 || 条件权

var loadPrevious = loadPrevious || function() {}

如果 loadPrevious 为真,则跳过下一个条件。

因此,function(){}只有在未定义的情况下才会分配给..

于 2012-10-11T22:41:20.417 回答