这个javascript语句究竟发生了什么:
var loadPrevious = (loadPrevious || function() {});
根据我的理解,变量loadPrevious要么是匿名函数要么是loadPrevious值
编辑:
非常感谢您的回答和评论。但为什么会有这样的声明:
var app;
loadPrevious(app = launchApplication($("#target"),0));
loadPrevious在这做什么?为什么这样呢?
答案 0 :(得分:6)
检查loadPrevious是否已分配值。如果没有,它会为它分配一个空函数。
此语法是与C ++或C#三元语法
等效的javascriptvar 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(){}
。