使用以下哪个语句来检查空数组是否有任何好处?
if (arr.length) {}
VS
if (arr.length > 0) {}
我假设它们是相同的,但我没有在第一个例子的网上看到任何例子。
答案 0 :(得分:3)
jQuery('#textArea').parent().next('div').length
我总是被告知这是检查空阵列的正确方法,而且它一直困扰着我。
所以,准确地回答你的问题:
if(typeof arr != "undefined" && arr != null && arr.length > 0){}
我被引导相信的方法是否“正确”,因为读取代码的任何人都更清楚隐含的逻辑是什么。我相信这可能是您在文档/示例/教程中使用此方法而不是另一种方法的原因。
但是除了语义外观之外的任何特定优势,我不相信有任何优势。
有关此问题的更多解释:Check if array is empty or exists
(链接,因为我不想窃取他们的描述 - 他们应该得到赞成)
答案 1 :(得分:1)
由于arr.length不能为负数,因此它们会产生相同的行为。在第一个中,整数值arr.length
将在布尔上下文中评估为true
或false
("truthy"}:false
如果为0,则为true
。所以它与if(arr.length != 0)
相同。
这一切都取决于你认为最清晰的东西。
答案 2 :(得分:0)
通常,它应该是相同的,因为0被识别为“false”(当转换为布尔值时)。但是使用“> 0”会使代码更具可读性,因此我建议使用
if (arr.length > 0) {}
速度方面,它们应该相同或几乎相同。
答案 3 :(得分:0)
一个主要的区别是在测试多个数组时简化代码
if (arr.length && arr2.length && arr3.length) {}
这比指定>要容易得多0不断。它的另一个例子是浏览器或javascript版本支持简写。如果您的目标受众群体适用于拥有过时浏览器的用户,则可能需要使用完整版本。