7 个回答

在js中,数组为引用类型,通过==或者===来比较两个数组是否相同,其实是比较两个数组的内存地址是否相同。

[] == [] 为false,是因为左、右两边的'[]'都不是同一个数组对象,其内存地址不一样。

如果要判断两个数组中的元素内容是否相同,可以通过将数组转换成字符串再做比较

var a = [], b = [];
alert(a.toString() == b.toString())

这是数组引用地址的比较,两者对应的引用地址是不一样的,就是两个房间的钥匙

‘==’ 运算符的隐式转换

js 中可以使用 == 和 === 运算符进行相等性判断,其中 == 运算符会进行隐式转换。

== 计算规则如下:

  1. 如果两个值类型一致,则使用 === 进行判断
  2. 如果一个值是 null,另一个值是 undefined,则两者相等
  3. 如果一个值是 number,另一个值是 string,则把 string 转换为 number 再进行比较
  4. 如果其中一个值为 boolean,则把它转换为 number,在比较
  5. 如果一个值 object,另一个值是 number 或者 string,则把 object 转换为 primitive 在进行比较
  6. 其他类型之间比较均不相等

MOREDETAIL: https://sevody.github.io/2017...

js的引用类型不相等。

类似C语言的指针,虽然都是空数组,但指向了不同的地址

楼主可以看看JAVA中的类似问题

String a = "hello world";
String b = "hello world";
String c = new String("hello world");
string d = new String("hello world");

print(a==b); //true
print(a.eqauls(b)); //true
print(c==d); //false
print(a.eqauls(b)); //true

NAN和NAN也不相等呀,这是你理解没到位呀

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏