【问题标题】:Why an empty array equals to an empty string while not to another empty array in javascript? [duplicate]为什么一个空数组等于一个空字符串,而不是 javascript 中的另一个空数组? [复制]
【发布时间】:2023-04-07 05:29:01
【问题描述】:

谁能描述一下上面的图片?这是我的 Chrome 开发工具控制台的屏幕截图。

【问题讨论】:

  • 提示:[].toString() 返回什么?
  • 那为什么[] == []返回false?
  • 因为this。另请阅读this
  • 数组是对象,比较两个对象总是返回 false,因为它们是 2 个不同的“事物”。当doing [] == "" 时,数组转换为字符串由 js 解释器完成。然后比较两个字符串。
  • 第三个也解释了它在接受的答案的底部。有许多问答可以回答这些等式之一。

标签: javascript


【解决方案1】:

因为 JavaScript 强制。

[] 大致等同于"",因此使用等于""[].toString() 强制转换为string

为什么[] == [] and [] === []返回false:

如果您要比较两个非原始值,例如对象(包括函数和数组),则 == 和 === 比较规则。因为这些值实际上是通过引用保存的,所以 == 和 === 比较都只会检查引用是否匹配,而不是任何关于基础值的内容。

var a = [1,2,3];
var b = [1,2,3];

var c = "1,2,3";

a == c;     // true
b == c;     // true
a == b;     // false

默认情况下,数组被强制转换为字符串,只需用逗号 (,) 将所有值连接起来。

【讨论】:

  • 您所说的“== 和 === 比较规则”是什么意思?
  • @nCardot 当您进行严格比较时,也会比较数据类型,但如果不是严格比较,则值会强制转换为相似的数据类型。这件事有一定的规则来强制价值观。你可以在 mdn 上阅读更多内容。
猜你喜欢
  • 2017-09-27
  • 2023-02-15
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 2012-07-14
  • 2014-10-21
相关资源
最近更新 更多