2012-10-11 106 views
3

究竟是怎么回事这个JavaScript语句:这个Javascript语句是什么意思?

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

从我的理解,变量loadPrevious要么将是一个匿名函数或价值loadPrevious

编辑:

确定大感谢您的答复和评论。但为什么然后会有这样的声明:

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

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

+1

您的理解是正确的 - 'loadPrevious'将保留其当前值,或者如果它没有,则初始化一个空函数。 –

+1

它看起来不像任何人在编辑中回答第二个问题。用这句话彻底解决你的问题。首先,jquery用于获取id为'target'的html元素的引用。然后传递给launchApplication()函数,其值被分配给var app。然后,loadPrevious()被调用,赋值给app,第二个参数为零。 –

回答

6

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

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

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

,例如JavaScript的等效。

+0

oohhh gotcha ... – user1664427

1

你是正确的,这将是loadPrevious价值,除非它的计算结果为假,在这种情况下,这将是空的匿名功能

1

这是一个OR ||条件右

var loadPrevious = loadPrevious || function() {} 

如果loadPrevious为真,那么它跳过下一个条件。

因此,将仅分配给如果没有定义它function(){} ..

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>