Javascript 未捕获引用错误:与未定义相比,if语句中未定义MyVariable
有人知道为什么下面的代码会发生这种情况吗Javascript 未捕获引用错误:与未定义相比,if语句中未定义MyVariable,javascript,undefined,Javascript,Undefined,有人知道为什么下面的代码会发生这种情况吗 if(myVarible !=undefined){ myVarible.doSomething() } myVariable是仅在某些页面上使用的全局对象 我相信我在过去做过这件事,而且一直都很有效。 我也试过了 if(!!s){} 我相信我过去也用过 终于让它可以使用if(typeof s!=“undefined”){} 但我想知道为什么未定义变量不等于undefined 为什么它在过去起作用 谢谢改用if(window.myVarible)。如
if(myVarible !=undefined){ myVarible.doSomething() }
myVariable是仅在某些页面上使用的全局对象
我相信我在过去做过这件事,而且一直都很有效。
我也试过了
if(!!s){}
我相信我过去也用过
终于让它可以使用if(typeof s!=“undefined”){}
但我想知道为什么未定义变量不等于undefined
为什么它在过去起作用
谢谢改用if(window.myVarible)
。如果您检查变量本身,JavaScript将尝试执行或检查variable1的值,从而产生此错误消息
您还可以使用if(typeof myVarible!=“undefined”)
,它将只查看变量的类型,而不查看其值
1 JavaScript检查变量值的方式取决于该变量是否作为对象属性写入,如
window.myVar
。据我所知,问题是,在某些页面上根本不创建全局myVarible
变量。
对于此类案例检查
myVarible !== undefined
及
他们是不平等的。区别在于,只有typeof
运算符可以处理对名称(例如变量)的不存在引用。当遇到无法解析的引用时,所有其他语言构造都会抛出ReferenceError
typeof
返回此情况下的字符串“undefined”
因此,在您的情况下,您应该使用typeof
操作符或检查全局对象上是否存在变量
属性
if (window.myVarible) {}
建议:如果(!s){…}有什么问题?另外:请看这里:因为
未定义的可以重新分配,所以您应该始终检查类型。
if (window.myVarible) {}