Javascript 检查 window 是否未定义

Javascript checking if window is undefined

我正在检查我的代码是否在浏览器上 运行,我首先尝试了以下两种方法:

if (window) {
    // do browser stuff
}


if (window !== undefined) {
    // do browser stuff
}

当我尝试使用此代码时,我收到一条错误消息,指出 window 未定义。但是,当我尝试以下方法时它起作用了:

if (typeof window !== 'undefined') {
    // do browser stuff
}

为什么前 2 个 if 语句抛出错误而第三个没有?

因此身份检查 window !== undefinedwindow 抛出错误,因为 window 未定义。这正是您在控制台中尝试时错误告诉您的内容:

VM49:1 Uncaught ReferenceError: iDoNotExist is not defined

我认为这应该有效的误解来自身份检查的通常使用方式。在函数中我们经常对输入参数进行这种检查。

const myFunction = (inputParam) => {
   if (inputParam){
      console.log(inputParam)
   } else {
      console.log("invalid parameter")
   }
}

myFunction("hello")
// 'hello'

myFunction()
// 'undefined'

myFunction(null)
// 'undefined'

myFunction(undefined)
// 'undefined'

另一方面,typeof 运算符 returns 其操作数的类型为字符串。由于 undefined 是 JavaScript 类型之一,表达式不会抛出错误,而是 returns 'undefined'。