为什么要将显式调用String
构造函数与隐式字符串求值true
进行比较,但是添加new
关键字使其在深等于上评估false
,但true
又等于浅等于?这为什么评价为错误?
> "hello"===String("hello")
true
> "hello"==new String("hello")
true
> "hello"===new String("hello")
false
编辑:后进一步测试,这似乎与具有隐含的构造函数所有类型的发生。
编辑2:澄清,这不是==
与===
的问题,但隐含的对显示的构造函数中的一个。
'的typeof “你好”'→' 'string'','typeof运算新字符串( “你好”)'→'' object'' – Biffen
''==只为值检查(' “4” == 4 > true'),但'==='也检查类型。 ('“4”=== 4> false'),因为一个是字符串,另一个是数字。 –
@ibrahimmahrir:他们都检查类型。如果发现类型不一样,那么'=='会输入一个类型强制算法。如果'=='只检查了这个值,那么'4 ==“4”'就是'false'。 –