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 !== undefined
和 window
抛出错误,因为 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'。
我正在检查我的代码是否在浏览器上 运行,我首先尝试了以下两种方法:
if (window) {
// do browser stuff
}
if (window !== undefined) {
// do browser stuff
}
当我尝试使用此代码时,我收到一条错误消息,指出 window
未定义。但是,当我尝试以下方法时它起作用了:
if (typeof window !== 'undefined') {
// do browser stuff
}
为什么前 2 个 if 语句抛出错误而第三个没有?
因此身份检查 window !== undefined
和 window
抛出错误,因为 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'。