Javascript JSLint错误'&&';子表达式应该用parens包装吗?或者如果条件错误
JSLint给了我以下错误: “&&”子表达式应包装在括号中 以下是导致问题的线路:Javascript JSLint错误'&&';子表达式应该用parens包装吗?或者如果条件错误,javascript,jquery,if-statement,syntax,jslint,Javascript,Jquery,If Statement,Syntax,Jslint,JSLint给了我以下错误: “&&”子表达式应包装在括号中 以下是导致问题的线路: if (anchorLink === 'page1' || anchorLink === 'page2' || anchorLink === 'page3' && (!$('#myDiv').hasClass('boom'))) { /* stuff */ } 我很抱歉问这个问题,因为有人问了一个非常类似、几乎完全相同的问题,但我尝试了不同的包装方法&条件,我无法让它工作。非常感谢对正确语法的
if (anchorLink === 'page1' || anchorLink === 'page2' || anchorLink === 'page3' && (!$('#myDiv').hasClass('boom'))) { /* stuff */ }
我很抱歉问这个问题,因为有人问了一个非常类似、几乎完全相同的问题,但我尝试了不同的包装方法&条件,我无法让它工作。非常感谢对正确语法的任何帮助。我假设您还需要在
&&
之前包装条件以消除表达式的歧义:
if ((anchorLink === 'page1' || anchorLink === 'page2' || anchorLink === 'page3') && (!$('#myDiv').hasClass('boom'))) { /* stuff */ }
关键是,您当前依赖于运算符优先级。 基本上,您有一个隐式括号:
anchorLink === 'page1' || anchorLink === 'page2' || (anchorLink === 'page3' && !$('#myDiv').hasClass('boom'))
这可能是你想要的,也可能不是
例如,您的意思可能是:
(anchorLink === 'page1' || anchorLink === 'page2' || anchorLink === 'page3') && !$('#myDiv').hasClass('boom')
为了避免歧义,JSLint建议在您的条件中加上显式括号。在所有
主播链接
条件周围加上括号,如果它们应该独立于hasClass
条件
if ((anchorLink === 'page1' || anchorLink === 'page2' || anchorLink === 'page3')
&& (!$('#myDiv').hasClass('boom'))) { /* stuff */ }
如果您只希望将hasClass
条件与page3
组合,则应为:
if (anchorLink === 'page1' || anchorLink === 'page2' ||
(anchorLink === 'page3' && (!$('#myDiv').hasClass('boom')))) { /* stuff */ }
第二个版本是省略括号后得到的解释,因为
&&
的优先级高于|
。这是一个常见的错误(第一个意思更可能是您想要的),这就是为什么JSLint会对此发出警告的原因。+1,但是周围的parens$(“#myDiv”).hasClass('boom')
完全没有意义。很好,非常感谢。。。我没有试过。谢谢你的帮助@fiddler,非常感谢。它是有效的。@T.J.克劳德没有必要否决我的问题?《f?@mlclm》:人们投反对票,人们发表评论。他们通常不是同一个人。如果你认为你知道谁否决了一个问题/答案,那么你错的比对的多。是的,你是对的,我不知道谁否决了,对不起,我这么快就把手指指向了你(因为否决发生在你回答我问题的同时),我错了。我没想到会有人投反对票,因为在我的问题中没有这样的理由。不管怎么说,我想总会有白痴在外面胡闹“好玩”。但再次感谢你对我的js问题的帮助,我真的很感激,这才是重要的。此外,我认为我的问题将帮助其他用户理解JSLiint错误以及将来如何解决它,所以这是一件好事。非常感谢您的解释…很有意义。我刚接触jQuery,慢慢地学习了很多有用的东西。这与jQuery无关,它甚至不特定于Javascript。在大多数编程语言(如C和PHP)中都存在同样的问题。感谢您向我展示并解释解决方案。我是jQuery新手,所以我正在慢慢学习。没问题,我们都去过一次!:不过要小心:这在JavaScript中是有效的,不仅仅是jQuery。@mlclm-请参阅以了解错误的解释。该站点试图为所有JSLint错误消息提供解释和解决方案。非常感谢链接!非常有用,已添加书签。