为什么在将变量与undefined进行比较时会出现“变量未定义”错误?

时间:2016-09-23 15:42:15

标签: javascript

我看了这个问题:

FillContextMap

但它没有帮助。

我有以下代码:

    if (_modeID != 8 && _modeID != 9)
        // do something

_modeID已定义并在一个单独的文件中分配了一个值。

我遇到了一个错误,由于某种原因,var _modeID = someIntVal;永远不会被执行,所以当上面的if语句运行时,根本就没有_modeID

我将它扩展为if (_modeID === null || _modeID === undefined || (_modeID != 8 && _modeID != 9),但这仍然会引发以下错误:

  

ReferenceError - Java脚本错误:'_modeID'未定义

我希望第一种或第二种情况在这种情况下评估为真,但显然不是。谁能解释我做错了什么?

假设这两个片段是“完整”文件,var _modeID = undefined; if (_modeID === undefined) ...与简单if (_modeID === undefined) ...不一样吗?

1 个答案:

答案 0 :(得分:5)

我通常看到人们检查变量的类型而不是变量本身,即

if( typeof _modeID === 'undefined' ) {
  ...
}