helmer_hanssen 2024-09-10 22:54 采纳率: 53.3%
浏览 8

这两个数组怎么不相等啊?


let numbers = Array(3, 4, 5,);
let values = [3, 4, 5,]
console.log(numbers, typeof numbers);
console.log(values, typeof values);
console.log(numbers === values);

这两个数组怎么不相等啊?

  • 写回答

2条回答 默认 最新

  • 一轮明月照丘壑 2024-09-10 22:55
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在你的 JavaScript 代码中,numbersvalues 虽然看起来像是两个包含相同元素的数组,但它们实际上并不相等。原因主要在于你创建 numbers 数组的方式。

    你使用了 Array(3, 4, 5,) 来创建 numbers 数组,但这种方式并没有创建一个包含三个元素的数组。在 JavaScript 中,Array() 是一个构造函数,当使用数字作为参数时,它实际上创建的是一个具有特定长度的数组,每个元素都是 undefined。所以 numbers 是一个长度为 3 的数组,其元素是 undefined。因此,当你尝试访问它的元素时(例如 numbers[0]),你将得到 undefined。在这种情况下,即使数组的长度相同,由于实际元素不同(一个是未定义的值,另一个是具体的值),所以它们并不相等。

    另一方面,你使用 [3, 4, 5,] 创建的 values 是一个包含具体数值的数组。这是正确的方式创建包含具体元素的数组。所以,这两个数组的值是不同的。这就是为什么 numbers === values 返回 false 的原因。

    如果你想让 numbersvalues 相等,你应该使用数组字面量的方式创建 numbers 数组,像这样:

    let numbers = [3, 4, 5];
    let values = [3, 4, 5];
    console.log(numbers === values); // 这将返回 true
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月10日