let a = 3; let b = new Number(3); let c = 3; console.log(a == b); console.log(a === b); console.log(b === c);
new Number()
是一个内置的函数构造函数。 虽然它看起来像一个数字,但它并不是一个真正的数字:它有一堆额外的功能,是一个对象。
当我们使用==
运算符时,它只检查它是否具有相同的值。 他们都有3
的值,所以它返回true
。
译者注:
==
会引发隐式类型转换,右侧的对象类型会自动拆箱为Number
类型。
然而,当我们使用===
操作符时,类型和值都需要相等,new Number()
不是一个数字,是一个对象类型。两者都返回 false
。