这个Javascript语句是什么意思?

3

这个javascript语句到底在干什么:

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

据我的理解,变量loadPrevious可能是一个匿名函数或者是值loadPrevious。

编辑:

好的,感谢回答和评论。但是为什么会有这样的语句呢:

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

这里的loadPrevious是做什么用的?为什么要这样做?

1
你的理解是正确的 - loadPrevious 将保留其当前值,或者如果它没有值,则初始化为空函数。 - chrisfrancis27
1
似乎没有人回答你编辑中的第二个问题。从这个语句开始逐步分析。首先,jQuery 用于获取 ID 为“target”的 HTML 元素的引用。然后将其传递给 launchApplication() 函数,该函数的值被分配给变量 app。接下来,使用分配给 app 的值和第二个参数零调用 loadPrevious()。 - Mike Corcoran
4个回答

6

代码检查是否已为loadPrevious分配了一个值。如果没有,则将其分配为空函数。

这个语法相当于C++或C#中的三元语法。

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

例如,在C#中。

3

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

这种模式在您从几个不同的位置向对象添加方法时非常有用,例如:

method1.js:

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

method2.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>

1

这是一个OR ||条件对吧

var loadPrevious = loadPrevious || function() {}

如果loadPrevious为真,则跳过下一个条件。
这样只有在未定义时才会将其分配给function(){}

1

没错,它将是 loadPrevious 的值,除非它评估为 false,在这种情况下它将是空的匿名函数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接