假设数组中的所有元素的值都不同于undefined、null或0,则为
if (idx < arr.length)等价于if (arr[idx])
发布于 2021-12-21 18:56:46
不是的。
还有其他虚妄值将在if语句中计算为false,例如空字符串(''):
const arrWithEmptyString = ['', '', ''];
const idx = 2;
console.log(!!(idx < arrWithEmptyString.length));
console.log(!!arrWithEmptyString[idx]);
或者,如果数组包含布尔false怎么办?
const boolArray = [true, false, true, false]
const idx = 3;
console.log(!!(idx < boolArray.length));
console.log(!!boolArray[idx]);
JS中的类型强制/类型转换可能是令人困惑和不可预测的--在我看来,更好的做法是明确并准确测试您要测试的内容,而不是依赖弱类型比较来保存几个字符。
发布于 2021-12-21 19:06:02
Alexander的回答很好,NaN的计算结果也是假的
const boolArray = [NaN, NaN, NaN, NaN]
const idx = 3;
console.log(!!(idx < boolArray.length));
console.log(!!boolArray[idx]);https://stackoverflow.com/questions/70440277
复制相似问题