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);
这两个数组怎么不相等啊?
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);
这两个数组怎么不相等啊?
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
在你的 JavaScript 代码中,numbers
和 values
虽然看起来像是两个包含相同元素的数组,但它们实际上并不相等。原因主要在于你创建 numbers
数组的方式。
你使用了 Array(3, 4, 5,)
来创建 numbers
数组,但这种方式并没有创建一个包含三个元素的数组。在 JavaScript 中,Array()
是一个构造函数,当使用数字作为参数时,它实际上创建的是一个具有特定长度的数组,每个元素都是 undefined
。所以 numbers
是一个长度为 3 的数组,其元素是 undefined
。因此,当你尝试访问它的元素时(例如 numbers[0]
),你将得到 undefined
。在这种情况下,即使数组的长度相同,由于实际元素不同(一个是未定义的值,另一个是具体的值),所以它们并不相等。
另一方面,你使用 [3, 4, 5,]
创建的 values
是一个包含具体数值的数组。这是正确的方式创建包含具体元素的数组。所以,这两个数组的值是不同的。这就是为什么 numbers === values
返回 false
的原因。
如果你想让 numbers
和 values
相等,你应该使用数组字面量的方式创建 numbers
数组,像这样:
let numbers = [3, 4, 5];
let values = [3, 4, 5];
console.log(numbers === values); // 这将返回 true