繁体   English   中英

`if (idx < arr.length)` 是否等同于 `if (arr[idx])`?

[英]Is `if (idx < arr.length)` equivalent to `if (arr[idx])`?

假设数组中的所有元素的值都不同于undefinednull0 ,则为

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM