【发布时间】:2015-07-28 09:07:02
【问题描述】:
如果我有一个未声明的变量并使用typeof,它会告诉我它是undefined。
但是,如果我随后使用if (qweasdasd === undefined) 对其进行检查,则会引发异常。
我不明白这种行为,因为如果第一次告诉undefined,那么第二次检查应该评估为if (undefined === undefined),为什么会抛出 ReferenceError 异常?
【问题讨论】:
-
@Jamiec — 可以复制:jsfiddle.net/y1xhw9un/1
-
@Quentin - 啊,那是未声明,当它未定义时,它可以工作jsfiddle.net/y1xhw9un/2
-
@Jamiec:在那个 sn-p 中,您秘密地将
y定义为具有undefined的值。 OP 询问的是变量未定义的情况,而不是其值为undefined的情况。 JavaScript 中不存在“未声明”这个术语;错误消息是“ReferenceError: ... 未定义”。 -
@Amadan - 不,看起来(来自 Quentins 示例)OP 有一个未声明的变量 - 这与未定义完全不同。我认为您的回答是正确的 -
typeof让您在没有平等检查的情况下“逃脱惩罚”。
标签: javascript operators