使用typeof vs ===检查未声明的变量会产生不同的结果

dam*_*uar 5 javascript operators

如果我有一个未声明的变量并使用typeof它告诉我它undefined.但是,如果我然后使用if (qweasdasd === undefined)它检查它会引发异常.

我不明白这种行为,因为如果第一次告诉undefined,那么第二次检查应该评估if (undefined === undefined),为什么它会抛出一个ReferenceError异常?

Ama*_*dan 7

typeof看起来像一个函数调用,但它不是 - 它是一个运算符.允许运营商违反规则.typeof(qweasdasd)不假设qweasdasd存在; 它是否存在以及它是什么才有可能被typeof发现.但是,在测试时qweasdasd === undefined,您使用的qweasdasd是一个值,当您使用未赋值的变量时,JS会抱怨.

  • 有时你只需要放弃理解javascript的逻辑. (2认同)