如果[0] == 0和0 == [[0]]都为真,那么为什么[0] == [[0]]为假?

鲁伯·图雷克

我们都知道javascript在进行相等性测试时会进行时髦的转换,但是到底发生了什么呢?

> [0] == 0
true
> 0 == [[0]]
true
> [0] == [[0]]
false

是的,我对==运算符的可传递性感到天真。

费利克斯·克林

[0] == 00 == [[0]]原始值与对象进行比较,从而类型转换将被执行。在这两种情况下[0][[0]]最终将被转换为原始值0

这是在“抽象平等比较算法”的步骤8(和9)中定义的

  1. 如果Type(x)是String或Number,并且Type(y)是Object,则
    返回比较结果x == ToPrimitive(y)。

但是,[0] === [[0]]比较两个对象,两个不同的对象永远不会相等:

1楼 如果xy指向同一对象,则返回true 否则,返回false。


这是一个简单的示例,表明松散比较不是可传递的:

" " == 0 // true
"\n" == 0 // true
" " == "\n" // false

前两个比较执行类型转换(字符串到数字),最后一个不执行,并且两个字符串的值都不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么“0”和“0”被评估为假?

来自分类Dev

为什么'0为假,但'False为真?

来自分类Dev

为什么 [0] === [0] 是假的

来自分类Dev

PHP检查0为假

来自分类Dev

C如果无符号长按位运算为0的条件比较结果的评估结果为假(尽管预期为真)(0 == 0为假)

来自分类Dev

Netlogo WITH 预期为真/假值,但结果为 0

来自分类Dev

为什么将此评估为假?“ S” == / [S] / => 0

来自分类Dev

'\ 0'!= 0是否为真?

来自分类Dev

从JSON对象中:“ 0”是否为假?

来自分类Dev

(假-NOT(0))等于1?

来自分类Dev

0 < 2 = ...假?

来自分类Dev

为什么不是“ 0” ==“ 0”?

来自分类Dev

SQL 0如果为负值

来自分类Dev

为什么此条件0 ='= 1'为真?

来自分类Dev

为什么此条件0 ='= 1'为真?

来自分类Dev

为什么“和”排除任何其中包含 0 的对 (x,y),而不是仅仅排除两者都为 0 的对?

来自分类Dev

$ {0 ## * /}和$ {0%/ *}如何工作?

来自分类Dev

.css('display')如何被阻止,[0] .hidden为假,.is(':hidden')为真?

来自分类Dev

为什么0 === -0为true,而1/0 === 1 / -0为false?

来自分类Dev

为什么无穷大==无穷大== 1/0为假?

来自分类Dev

为什么cos(M_PI_2)== float(0)计算为假?C ++

来自分类Dev

为什么cos(M_PI_2)== float(0)的计算结果为假?C ++

来自分类Dev

如果> 0,则SSRS计数

来自分类Dev

在C ++中,为什么在此程序中,每个const char *都为空,每个int都为0?

来自分类Dev

如果值存在,为什么 indexOf(char) 为 0?

来自分类Dev

如果 2%2 为 0,为什么会打印 2?

来自分类常见问题

为什么x [0]!= x [0] [0]!= x [0] [0] [0]?

来自分类Dev

ActualWidth和ActualWidth为0

来自分类Dev

如果不是0和1,则返回false

Related 相关文章

热门标签

归档