Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSLint错误'&&';子表达式应该用parens包装吗?或者如果条件错误_Javascript_Jquery_If Statement_Syntax_Jslint - Fatal编程技术网

Javascript JSLint错误'&&';子表达式应该用parens包装吗?或者如果条件错误

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 */ } 我很抱歉问这个问题,因为有人问了一个非常类似、几乎完全相同的问题,但我尝试了不同的包装方法&条件,我无法让它工作。非常感谢对正确语法的

JSLint给了我以下错误:

“&&”子表达式应包装在括号中

以下是导致问题的线路:

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错误消息提供解释和解决方案。非常感谢链接!非常有用,已添加书签。