为什么在JavaScript中,一个空数组等于一个空字符串,而不等于另一个空数组?

10 浏览
0 Comments

为什么在JavaScript中,一个空数组等于一个空字符串,而不等于另一个空数组?

请描述上面的图片。这是我Chrome开发工具控制台的截图。

0
0 Comments

在JavaScript中,出现了一个问题:为什么一个空数组等于一个空字符串,但不等于另一个空数组?问题的原因是JavaScript的强制类型转换。

当我们使用[]时,它被宽松地等同于"",并通过[].toString()进行强制类型转换为字符串,结果是""

那么为什么[] == [][] === []返回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

数组默认会通过用逗号(,)连接所有的值来进行强制类型转换为字符串。

那么什么是“==和===比较规则”呢?

当进行严格比较时,会同时比较数据类型,但如果不是严格比较,则会强制将值转换为类似的数据类型。这个强制转换遵循一定的规则,你可以在MDN上阅读更多相关信息。

0