【发布时间】:2016-03-29 13:37:58
【问题描述】:
我对 == 和 === 有点困惑。我知道 == 表示不检查类型, === 表示检查类型。但是当我申请 null 案例时,它会失败。为什么
var obj = {
name : 'null'
}
document.write(obj.name==null);
输出:假
【问题讨论】:
-
'null'和null不是一回事 -
不,我不能这样做。因为它来自后端
-
但 == 不检查类型
-
@Rahul 是的,但在 JS 中,
'1'==1返回true。那么为什么'null'==null会返回false? -
@JeremyThille ECMAScript 5 规范说:1)对于 '1' == 1:规则是:如果 Type(x) 是 String 并且 Type(y) 是 Number,则返回比较结果 ToNumber (x) == y: "2" == 2. 2) For 'null' == null: 规则是:如果 Type(x) 是 String 或 Number 并且 Type(y) 是 Object,则返回比较 x == ToPrimitive(y):ToPrimitive 表示隐式 valueOf 调用,如果定义了 toString 而未定义 valueOf,则表示 toString。
标签: javascript jquery angularjs types compare