Uncaught ReferenceError: myVarible is not defined in if statement comparing to undefined

Uncaught ReferenceError: myVarible is not defined in if statement comparing to undefined

有谁知道为什么下面的代码会发生这种情况

if(myVarible !=undefined){ myVarible.doSomething() }

myVariable 是一个全局对象,仅在某些页面上使用 我确信我过去做过这个并且它总是有效。 我也试过了

if(!!s){}

我也确定我过去用过。

终于让它与 if(typeof s!=="undefined"){}

一起工作

但我想知道为什么未定义的变量不等于 undefined 为什么它在过去有效?

谢谢

改用if(window.myVarible)。如果您检查变量本身,JavaScript 将尝试执行或检查变量 1 的值,这反过来会产生此错误消息。

您也可以使用 if(typeof myVarible !== "undefined"),它只会查看变量的类型而不查看其值。


1JavaScript检查变量值的方式取决于该变量是否被写为对象属性 喜欢 window.myVar 或不喜欢。

据我了解,问题是在某些页面上您根本没有创建全局 myVarible 变量。 对于这种情况检查

myVarible !== undefined

typeof myVarible !== "undefined"

不相等。不同之处在于,只有 typeof 运算符可以处理不存在的名称引用(例如变量)。当遇到无法解析的引用时,所有其他语言构造都会抛出 ReferenceErrortypeof returns 本例的字符串 "undefined"

因此,在您的情况下,您应该使用 typeof 运算符或检查全局对象上是否存在 variable 属性。

if (window.myVarible) {}

link to ecma-script specification defining typeof behavior