使用以下其中一個語句來檢查空數組是否有什麼優勢?測試空數組
if (arr.length) {}
VS
if (arr.length > 0) {}
我假設他們是相同的,但我還沒有看到任何在線的例子第一個例子。
使用以下其中一個語句來檢查空數組是否有什麼優勢?測試空數組
if (arr.length) {}
VS
if (arr.length > 0) {}
我假設他們是相同的,但我還沒有看到任何在線的例子第一個例子。
一般來說,應該是相同的,因爲0被認定爲「假」時(當轉換成布爾值)。但有一個「> 0」將使代碼的可讀性,所以我建議使用
if (arr.length > 0) {}
速度明智的,他們應該是相同的,或者幾乎如此。例如
if (arr.length && arr2.length && arr3.length) {}
測試多個陣列時
一個主要區別是爲了便於代碼這將是不是指定> 0不斷容易得多。它的另一個功能是瀏覽器或javascript版本支持簡寫。如果您的目標受衆是針對使用過時瀏覽器的用戶,那麼您可能需要使用完整版本。
它不依賴於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
if(typeof arr != "undefined" && arr != null && arr.length > 0){}
我總是被告知這是檢查空數組的正確方法,它和我一起卡住了。
因此,要準確地回答你的問題:
if(arr.length > 0){}
是我帶領相信是「正確」的方法,因爲它是更清晰的任何人閱讀代碼什麼的隱含邏輯是。我相信這可能就是爲什麼你看到這種方法在文檔/樣本/教程中使用的另一種方法。
至於比語義的外觀和感覺其他任何具體的好處,我不相信有任何。在這個問題上提供
很多更多的解釋:Check if array is empty or exists
(鏈接,因爲我不希望竊取他們的描述 - 他們應得的upvotes)
這是題外話題。 OP不想知道他的變量是否被定義。在每個數組長度的測試中這樣做是沒有意義的。 –
@DenysSéguret - 擴展我的答案以涵蓋問題的具體內容,同時在答案中留下更多的「全部覆蓋」檢查,以幫助提供更廣泛的檢查並避免混淆沒有條目的數組和空/未定義數組,如果不是最初的提問者,這可能會使這個問題的其他讀者受益。 – Sk93
由於arr.length不能爲負,它們會導致相同的行爲。在第一個中,整數值arr.length
將在布爾上下文中被評估爲true
或false
(它是"truthy"):false
如果是0和true
,則爲0。所以它與if(arr.length != 0)
相同。這一切都取決於你認爲最清晰的東西。
他們實際上是相同的,前一個作品的原因是因爲if語句將與1和0的對待他們真假 – George
一個較短的工作。就這樣。 –
我同意。他們是一樣的!雖然可能想添加一些關於可讀性的內容。第二個更容易閱讀... –