2012-10-11 133 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>