2016-11-17 93 views
1

我試圖調試與道場本地化一些JavaScript代碼,我在道場遇到下列代碼來:使用Javascript(0 && 1)

isXd = function(mid, contextRequire){ 
    return (0 && 1) ? 
     contextRequire.isXdUrl(require.toUrl(mid + ".js")) : 
    true; 
}, 

什麼是這裏的三元運算符的目的是什麼?在我看來,(0 && 1)將永遠是false,並且此功能將始終返回true。這是一個瀏覽器兼容性的東西?

+3

我猜測它是生成的代碼。 – Pointy

+0

絕對不是瀏覽器兼容性的東西,因爲所有的瀏覽器都以相同的方式處理這種情況。正如@Pointy所說,它可能是由某種工具產生的。 –

+0

謝謝,我認爲你是對的。只要我可以解讀它,原始代碼就沒有這個。 – xdhmoore

回答

2

我發現的源代碼與您的代碼有點不同,但解釋應該適合。

原代碼可以在i18n.js這是完整源包的一部分中找到:

isXd = function(mid, contextRequire){ 
    return (has("dojo-sync-loader") && has("dojo-v1x-i18n-Api")) ? 
     contextRequire.isXdUrl(require.toUrl(mid + ".js")) : 
     true; 
}, 

在包含於i18n.js.uncompressed.js相同的部分在發佈包看起來是這樣的:

isXd = function(mid, contextRequire){ 
    return (1 && 1) ? 
     contextRequire.isXdUrl(require.toUrl(mid + ".js")) : 
     true; 
}, 

當你看看Dojo加載程序部分"Options/Features",您會看到dojo-sync-loader的默認值爲true

的文檔狀態:

第一列是作爲裝載器內定義的選項/功能,所述第二選項是這是否是一個檢測到的特徵(通過has.add())或如果它只是一個選項,其默認值爲。使用「未構建」的源代碼,所有功能和選項都可用。 如果加載器已經被構建,那麼這些特性中的一些可能已經被設置爲staticHasFeatures並且不再可配置。

作爲dojo-sync-loader是不可檢測的特徵,可能的在內置源代替它。

+1

謝謝。這絕對是線路。 – xdhmoore

相關問題