2011-04-12 82 views
3

地塊我看到這樣爲什麼我們應該檢查被定義的變量var m = m ||函數(){}

Common.deepCopy = Common.deepCopy || function(oldObject) { 
     return $.extend(true, {}, oldObject); 
    }; 

定義什麼是定義方法是這樣的對象的需求的方法的庫。

因爲js文件只會被執行一次,所以以前沒有定義deepCopy的機會。

+0

如果另一個庫實現了這個確切的方法會怎樣?然後檢查是有道理的,伊莫.. – 2011-04-12 06:10:35

回答

1

情況並非總是如此。你永遠不知道JS文件是否包含兩次或是否被重新初始化。最好檢查對象是否存在,如果存在則分配它。否則創建一個新的對象

3

這是爲了防止它已經在另一個文件中定義,或腳本運行多次。

0

通常這是爲了檢查環境中是否已經存在某個東西,如Array.prototype.indexOf。它在oldIE中不存在。

var indexOf = [].indexOf ? fn : fn2 

現在您可以將fn定義爲使用本機indexOf,然後將fn2用於不支持它的環境。

這樣更好,所以每次調用函數時都不必檢查 - 而是在您定義它時進行檢查。

相關問題