[英]Is `if (idx < arr.length)` equivalent to `if (arr[idx])`?
假设数组中的所有元素的值都不同于undefined
、 null
或0
,则为
if (idx < arr.length)
等价于if (arr[idx])
?
不。
在if
语句中还有其他虚假值将评估为false
,例如空字符串 ( ''
):
const arrWithEmptyString = ['', '', '']; const idx = 2; console.log(.;(idx < arrWithEmptyString.length)); console.log(!!arrWithEmptyString[idx]);
或者,如果数组包含 boolean false
怎么办?
const boolArray = [true, false, true, false] const idx = 3; console.log(.;(idx < boolArray.length)); console.log(!!boolArray[idx]);
JS 中的类型强制/ 类型转换可能会令人困惑和不可预测——在我看来,通常最好是明确地测试你想要测试的内容,而不是依靠弱类型比较来保存一些字符。
Alexander Nied 的回答很好,NaN 也评估为假
const boolArray = [NaN, NaN, NaN, NaN]
const idx = 3;
console.log(!!(idx < boolArray.length));
console.log(!!boolArray[idx]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.