2015-04-17 12 views
0

我一直在一個項目上工作,我經常需要得到一個變量的長度。我最近開始使用以下語法,因爲我認爲它看起來更好,輸入速度更快,特別是當我有很長的變量名稱和多個條件時。檢查null與使用||當獲得長度

if ((myArrayVariable || "").length > 0) { 
    // Do stuff... 
} 

以前,我這樣做是這樣的:

if (myArrayVariable != null && myArrayVariable.length > 0) { 
    // Do stuff... 
} 

我想知道的是,如果/第一語法(多少)是效率較低?

+11

做這種方式挺好的,我一般喜歡'如果(VAR && var.length){...'但performancewise你永遠不會發現任何區別。 – adeneo

+0

是的一個或另一個可能會快幾微秒。絕對是保持清醒的晚上擔心的一些事情。認真做任何最可讀和感覺正確的事情,你的方法很好。 –

回答

1

爲了測試性能,我做了jsperf test該測試空,空數組,並用一個元件上的以下變體的數組:

  • 第一樣式(array || '').length > 0
  • 第二語法array != null && array.length > 0
  • 第三版本array && array.length

的初始運行指示第一變化是比其他人慢96%。此外,其他兩個幾乎相同,但adeneosuggestion比第二個快大約百分之五十。

The first is 96% slower than the others

+1

FWIW請參閱http://jsperf.com/check-array-is-not-null-and-empty/2。我已經從所有測試用例中刪除了'> 0',添加了try-catch變體(非常慢),並將第一個樣式更改爲'array ||「。 []'。第一個版本比第二個版本慢80%。第三個版本由於某種原因慢了50%。然而,除非在緊密的循環中運行數百萬次,否則我會選擇我認爲更易讀的第一個或第三個版本。 –

+0

@torazaburo我在Firefox中測試了編輯,第一個更慢,第二個和第三個幾乎相同。原來的測試使用了OP的片段,因爲這就是問題的具體問題。通常我會像你一樣寫下它。 – David