代码之家  ›  专栏  ›  技术社区  ›  Nitin Jadhav

为什么JavaScript“数组中的长度”对包含一个或多个元素的数组给出不同的结果?

  •  2
  • Nitin Jadhav  · 技术社区  · 4 年前

    length in array 提供以下输出:

    length in ['test']
    false
    

    但如果我们尝试使用更多元素,它会输出以下结果:

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

    0 回复  |  直到 4 年前
        1
  •  2
  •   CertainPerformance    4 年前

    这个 length 你用的不是指 'length' 属性,但全局标识符中包含的值 长度 window . window.length 是, per MDN

    返回帧数(或 <frame> <iframe> 元素)。

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

    演示以下内容的实时片段:

    // NOTE THE EXISTENCE OF ONE IFRAME in the HTML
    
    console.log(length in ['test']);
    console.log(length in ['test', 'test2']);
    <iframe></iframe>

    类似地:

    const length = 3;
    console.log(
      length in [0, 1, 2, 3, 4, 5] // true; more than 3 items
    );
    console.log(
      length in [0, 1] // false; less than 3 items
    );
        2
  •  1
  •   amakhrov    4 年前

    length length in [0, 1] 可以返回 true false . 长度 是一个全局变量(实际上,它是window的一个属性: window.length 1 . 这就解释了原因 1 in ['test'] 为false(没有具有索引的元素 1 这里),但是 1 in ['test1', 'test2'] 是真的。

    'length' in []
    

    在这种情况下,它将返回 是的 因为所有数组都有“length”属性