Javascript 未定义的array.length返回true而不是false

Javascript 未定义的array.length返回true而不是false,javascript,Javascript,我目前正在研究MDN JavaScript文档,在其中一个初学者练习中,它声称:() 在布尔上下文中使用时,未定义的值表现为false var myArray = []; if (!myArray[0]) myFunction(); 然而,我的大脑是简单的,无法处理if语句中的相反项。因此,我使用.length函数重新编写了它: var myArray=[]; if(myArray.length==1){ 日志(“如何?”); }否则{ log(“你好,世界!”); }对于测试myArray

我目前正在研究MDN JavaScript文档,在其中一个初学者练习中,它声称:()

在布尔上下文中使用时,未定义的值表现为false

var myArray = [];
if (!myArray[0]) myFunction();
然而,我的大脑是简单的,无法处理if语句中的相反项。因此,我使用.length函数重新编写了它:

var myArray=[];
if(myArray.length==1){
日志(“如何?”);
}否则{
log(“你好,世界!”);

}
对于测试
myArray.length==1
要计算为
true
数组必须包含精确的一个元素。但是你没有在里面放任何东西,所以测试失败了,
helloworld已打印

将数组视为容器

var myArray; // is undefined

var myArray = [] // is NOT undefined
var myArray=[]
为空,但它是一个有效数组

因此,使用
.length
,更好的测试应该是:

if (myArray.length === 0)
那么
如何打印?


因为数组中没有任何内容,所以长度为0。

如果您正在调试,请使用控制台输出检查或检查变量/创建您监视的对象

var myArray=[];
console.log(!myArray);
console.log(!myArray[0]);
打印它(myArray.length==0)
打印它(myArray.length==1)
函数printIt(确定){
if(ok){console.log(“ok”);}
else{console.log(“不正常”);}
}
myArray[0]
-在此数组初始化中,默认值为0将取1


如果(myArray.length==1)
-在此行中,它将返回以获得与初始化相反的结果。所以,它被打印为1。

代码输出
Hello World。另外,我认为你的意思是空数组而不是未定义的数组。数组不是未定义的,它是空的,它将返回Hello World!您错了,数组在使用var myArray=[]初始化时没有未定义。您的两个语句做的事情不同,第一个语句针对数组中的第一个项进行测试(
未定义(/code>),第二个语句针对数组中的项数进行测试(
0
)。你到底想干什么?。但除此之外,我无法重现这个问题。我还将代码编辑成可运行的代码段。
var myArray = [];
if (!myArray[0]) myFunction();