这个Javascript语句是什么意思?

时间:2012-10-11 22:38:04

标签: javascript

这个javascript语句究竟发生了什么:

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

根据我的理解,变量loadPrevious要么是匿名函数要么是loadPrevious值

编辑:

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

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

loadPrevious在这做什么?为什么这样呢?

4 个答案:

答案 0 :(得分:6)

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

此语法是与C ++或C#三元语法

等效的javascript
var loadPrevious = loadPrevious != null ? loadPrevious : () => {}; 
例如,在C#中

答案 1 :(得分: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>

答案 2 :(得分:1)

你是对的,它将是loadPrevious的值,除非它的计算结果为false,在这种情况下它将是空的anon函数

答案 3 :(得分:1)

这是一个 OR || 条件

var loadPrevious = loadPrevious || function() {}

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

因此,只有在未定义时才会将其分配给function(){}