【发布时间】:2012-10-23 15:03:24
【问题描述】:
我对 JSLint 感到困惑。
我的代码最初检查 div:jqmData("me") 是否像这样未定义:
if ( typeof el.jqmData("me") == "undefined"
? el.not(':jqmData(panel="main")').length > 0
: el.not(':jqmData(me="first")').length > 0 ){
}
JSLint 抱怨我应该用typeof 代替检查===,所以我这样做了:
if ( el.jqmData("me") === "undefined"
? el.not(':jqmData(panel="main")').length > 0
: el.not(':jqmData(me="first")').length > 0 ){
}
JSLint 不再抱怨了,但是我的嵌套 if 语句被破坏了,因为我现在总是以第二个 if el.not(':jqmData(me="first")').length 结束,即使我不应该这样做。
问题:
为什么 JSLint 推荐 === 而不是 typeof == undefined?这怎么会打破我的逻辑?
感谢您的启发......
【问题讨论】:
-
x === undefined,不是x === 'undefined' -
@zerksm:请回答!
-
根据您检查的内容,使用
typeof someVar === 'undefined'比使用someVar === undefined有一个优势,即如果someVar实际上没有定义,则前者不会中断。例如,如果someVar尚未声明,您将使用后者获得ReferenceError,而前者工作顺利。见:stackoverflow.com/questions/4725603/…(抄送@zerkms) -
@NullUserException: 是的,检查变量是有意义的(与属性相反)
标签: javascript jquery undefined jslint typeof