为什么使用JavaScript;“数组中的长度”;对于具有一个或多个元素的数组,是否给出不同的结果?

为什么使用JavaScript;“数组中的长度”;对于具有一个或多个元素的数组,是否给出不同的结果?,javascript,arrays,Javascript,Arrays,在chrome 87中,数组中的长度给出以下输出: length in ['test'] false 但如果我们尝试使用更多元素,它会输出以下结果: length in ['test', 'test2'] true 有人能解释这些不同的输出吗?length在您的代码片段中是一个变量,我假设它是在其他地方定义的,并且有一些值。根据[0,1]中的长度值,可以返回true或false。 既然您提到了Chrome,我假设您正在Chrome开发工具中运行此代码段。在本例中,length是一个全局变量(

在chrome 87中,数组中的
长度
给出以下输出:

length in ['test']
false
但如果我们尝试使用更多元素,它会输出以下结果:

length in ['test', 'test2']
true

有人能解释这些不同的输出吗?

length
在您的代码片段中是一个变量,我假设它是在其他地方定义的,并且有一些值。根据[0,1]中的
长度值,
可以返回
true
false
。 既然您提到了Chrome,我假设您正在Chrome开发工具中运行此代码段。在本例中,
length
是一个全局变量(实际上,它是window:)的一个属性)。检查它的值-它可能是
1
。这解释了为什么['test']中的
1为false(这里没有索引为
1
的元素),而['test1','test2']
中的
1为true

如果要检查属性“length”是否存在,则需要将其作为字符串:

'length' in []

在这种情况下,它将为任何数组返回
true
,因为所有数组都具有“length”属性您使用的
length
不是指
'length'
属性,而是指存在于
窗口中的全局标识符
length
中包含的值<代码>窗口。长度
为:

返回窗口中的帧数(或
元素)

因此,如果窗口中正好有一个frame或iframe,则代码将生成该结果,因为第二个数组具有
[1]
属性,但第一个数组没有
[1]
属性

演示这一点的实时片段:

//注意HTML中存在一个IFRAME
log(长度以['test']为单位);
log(长度以['test','test2']为单位)

长度的值是多少?
这个解释听起来不错!谢谢