未捕获的ReferenceError:if语句中未定义myVarible与undefined进行比较

blu*_*eby 4 javascript undefined

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

if(myVarible !=undefined){ myVarible.doSomething() }
Run Code Online (Sandbox Code Playgroud)

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

if(!!s){}
Run Code Online (Sandbox Code Playgroud)

我也确信我过去曾使用过.

终于搞定了 if(typeof s!=="undefined"){}

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

谢谢

Raf*_*ael 6

根据我的理解,问题是,在某些页面上你根本不创建全局myVarible变量.对于此类案件检查

myVarible !== undefined
Run Code Online (Sandbox Code Playgroud)

typeof myVarible !== "undefined"
Run Code Online (Sandbox Code Playgroud)

不平等.不同之处在于,只有typeof运营商才能处理对名称(例如变量)的不存在的引用.ReferenceError遇到无法解析的引用时,所有其他语言结构都会抛出.typeof返回"undefined"此案例的字符串.

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

if (window.myVarible) {}
Run Code Online (Sandbox Code Playgroud)

链接到定义typeof行为的ecma-script规范