Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么;123";。split(';';&)不等于[1,2,3]。join(&';';)。split(';';)_Javascript - Fatal编程技术网

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中,数组就是对象。虽然内容相同,但它们是不同的对象。谢谢大家-上帝保佑你哦,对了,参考文献是不同的。现在我明白了。这不是我的错——是我大脑的感觉神经元造成的