2015-05-28 42 views
2

使用以下其中一個語句來檢查空數組是否有什麼優勢?測試空數組

if (arr.length) {} 

VS

if (arr.length > 0) {} 

我假設他們是相同的,但我還沒有看到任何在線的例子第一個例子。

+0

他們實際上是相同的,前一個作品的原因是因爲if語句將與1和0的對待他們真假 – George

+2

一個較短的工作。就這樣。 –

+0

我同意。他們是一樣的!雖然可能想添加一些關於可讀性的內容。第二個更容易閱讀... –

回答

0

一般來說,應該是相同的,因爲0被認定爲「假」時(當轉換成布爾值)。但有一個「> 0」將使代碼的可讀性,所以我建議使用

if (arr.length > 0) {} 

速度明智的,他們應該是相同的,或者幾乎如此。例如

if (arr.length && arr2.length && arr3.length) {} 

測試多個陣列時

0

一個主要區別是爲了便於代碼這將是不是指定> 0不斷容易得多。它的另一個功能是瀏覽器或javascript版本支持簡寫。如果您的目標受衆是針對使用過時瀏覽器的用戶,那麼您可能需要使用完整版本。

+0

它不依賴於JavaScript或瀏覽器版本;這是一個已經使用JavaScript至少18年的「特性」([ECMAScript 1.0,1997](http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262, %第201%20edition,%20June%201997.pdf))。 – Frxstrem

3
if(typeof arr != "undefined" && arr != null && arr.length > 0){} 

我總是被告知這是檢查空數組的正確方法,它和我一起卡住了。

因此,要準確地回答你的問題:

if(arr.length > 0){} 

是我帶領相信是「正確」的方法,因爲它是更清晰的任何人閱讀代碼什麼的隱含邏輯是。我相信這可能就是爲什麼你看到這種方法在文檔/樣本/教程中使用的另一種方法。

至於比語義的外觀和感覺其他任何具體的好處,我不相信有任何。在這個問題上提供

很多更多的解釋:Check if array is empty or exists

(鏈接,因爲我不希望竊取他們的描述 - 他們應得的upvotes)

+2

這是題外話題。 OP不想知道他的變量是否被定義。在每個數組長度的測試中這樣做是沒有意義的。 –

+0

@DenysSéguret - 擴展我的答案以涵蓋問題的具體內容,同時在答案中留下更多的「全部覆蓋」檢查,以幫助提供更廣泛的檢查並避免混淆沒有條目的數組和空/未定義數組,如果不是最初的提問者,這可能會使這個問題的其他讀者受益。 – Sk93

1

由於arr.length不能爲負,它們會導致相同的行爲。在第一個中,整數值arr.length將在布爾上下文中被評估爲truefalse(它是"truthy"):false如果是0和true,則爲0。所以它與if(arr.length != 0)相同。這一切都取決於你認爲最清晰的東西。