let miArray = []
let miObjArray = new Array();
console.log(miArray)
console.log(miObjArray)
console.log(typeof(miArray) , typeof(miObjArray))
console.info("son el mismo objeto?" , Object.is(miArray, miObjArray))
let miArray = []
let miOtroArray = miArray;
miOtroArray.push("se vera en los dos arrays")
console.info("miArray" , miArray)
console.info("miOtroArray" , miOtroArray)
console.info("son el mismo objeto?" , Object.is(miArray, miOtroArray))
这不是 JavaScript 独有的,同样的问题出现在其他编程语言中,因为它会比较对象/数组的实例而不是值本身。
所以
[] == []
实际上做第一个[]
不等于第二[]
个,因为它们不是同一个实例。他们每个人[]
都会有不同的身份。正如您在问题中所建议的那样,它们确实是不同的元素。如果
[] == []
它是假的,那么[] === []
它也是假的,因为即使类型相同,身份也是不同的。参考资料(英文):
当你这样做的时候
[]
创建一个新的数组对象就相当于做了类似的速记,你可以用Object.isnew Array()
命令看到它们是不同的对象出于明显的原因,如果它
==
是错误的,那么这样做===
会返回相同的结果为了使它们相等,变量必须指向同一个对象,但是当您进行更改时,其他变量将接受更改(可变对象)
[] 原来是假的,例如
但它们属于不同类型,我们用 === 进行测试
现在我们比较,但我们不能直接比较
array1==array2
,我们必须比较元素,因为我们使用join();
我告诉你以下内容,以便在 JavaScript 中比较两个数组时,即使它们为空,它也会返回 true;您必须使用 typeof() 函数,这样它们不仅可以在长度上进行比较,还可以在类型上进行比较:
您还可以注意到,在 JS 中,数组实际上是对象,实际上一切都是对象,可能是答案
如果您想在比较两个数组时获得 TRUE,例如,您可以将值放入每个数组中,并在进行比较时按其长度进行,如下例所示
对于前面的示例,如果在比较时您删除了对 length 方法的访问并进行比较,它将给出 FALSE
问候,我希望让自己明白
从我在那里读到的内容来看,这是因为数组的处理方式,在 javascript 中它以不同的方式,尽管例如你这样做
将返回 false 因为要进行比较
array
,您需要以不同的方式对待它,例如循环遍历它或应用属性来处理数组。所以如果我运行它,它将返回 true