为什么在JavaScript中,一个空数组等于一个空字符串,而不等于另一个空数组?
- 论坛
- 为什么在JavaScript中,一个空数组等于一个空字符串,而不等于另一个空数组?
10 浏览
匿名的
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上阅读更多相关信息。