Javascript 为什么;123";。split(';';&)不等于[1,2,3]。join(&';';)。split(';';)
这似乎是一个非常基本的问题,但找不到任何解释 考虑这一点:Javascript 为什么;123";。split(';';&)不等于[1,2,3]。join(&';';)。split(';';),javascript,Javascript,这似乎是一个非常基本的问题,但找不到任何解释 考虑这一点: var-arr=[1,2,3]; var str=“123”; 函数比较(){ 返回arr.join(“”).split(“”)==str.split(“”) } log(compare()); 控制台日志(arr.join(“”).split(“”)) log(str.split(“”))比较两个对象的引用,而不是它们的内容。因为有两个不同的对象,所以它们的引用不相等 如果两个变量引用同一对象,则带有引用类型的=将返回true。在下
var-arr=[1,2,3];
var str=“123”;
函数比较(){
返回arr.join(“”).split(“”)==str.split(“”)
}
log(compare());
控制台日志(arr.join(“”).split(“”))
log(str.split(“”))
比较两个对象的引用,而不是它们的内容。因为有两个不同的对象,所以它们的引用不相等
如果两个变量引用同一对象,则带有引用类型的=
将返回true
。在下面的示例中,a
和b
都引用相同的对象(内存中的相同部分),因此它们是相等的
const a={};
常数b=a;//指定'a'的值,该值是对'b'的引用`
console.log(a==b)编码>,因为虽然您正在比较的两个数组是等效的,但它们不是相同的数组<代码>=
(和==
)与对象一起检查它们是否是相同的对象
实际上,您拥有的是:
console.log([“1”、“2”、“3”]==[“1”、“2”、“3”])代码>它们不是相同的数组&它们是单独的对象引用。如果你想比较这两者,那么就把它们串起来
var-arr=[1,2,3];
var str=“123”;
函数比较(){
return(arr.join(“”).split(“”)).toString()==str.split(“”).toString(“”)
}
log(compare());
控制台日志(arr.join(“”).split(“”))
log(str.split(“”))
您不能像这样比较对象看看:在JavaScrip中,数组就是对象。虽然内容相同,但它们是不同的对象。谢谢大家-上帝保佑你哦,对了,参考文献是不同的。现在我明白了。这不是我的错——是我大脑的感觉神经元造成的