我目前正在研究 MDN JavaScript 文档,并且在其中一个初学者练习中它声称:( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Evaluating_variables )
undefined 值在 bool 上下文中使用时表现为 false。
var myArray = [];
if (!myArray[0]) myFunction();
但是,我头脑简单,无法处理 if 语句中的对立面。因此,我使用 .length 函数重写了它:
var myArray = [];
if(myArray.length === 1) {
console.log("How?");
} else {
console.log("Hello World!");
}
我期待的是 Hello World!将被打印,因为数组未定义并且应该返回 false 但它返回 1。
任何关于为什么会发生这种情况的解释都会很棒!
最佳答案
要使 myArray.length === 1
评估为 true
,数组必须恰好 包含一个元素。但是您没有在其中放入任何东西,因此测试失败并打印了 Hello World!
。
将数组视为容器。
var myArray; // is undefined
var myArray = [] // is NOT undefined
var myArray = []
为空,但它是一个有效数组。
因此,使用 .length
,更好的测试应该是:
if (myArray.length === 0)
那么 How?
就会被打印出来。
因为你的数组里什么都没有,所以长度为0。
关于javascript - 未定义的 array.length 返回 true 而不是 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260039/