JSLINT 关于样式的警告或关于条件表达式的错误
Posted
技术标签:
【中文标题】JSLINT 关于样式的警告或关于条件表达式的错误【英文标题】:JSLINT warning about style or error about Conditional Expression 【发布时间】:2011-07-24 03:57:49 【问题描述】:我正在尝试解决 JSLINT 对我不知道如何解决的两件事的警告。哪一行应该换成什么代码?我在下面粘贴了有问题的代码和关于它们的警告。非常感谢您的建议/回答。
JSLINT 说:
第 137 行的问题:需要一个条件表达式,而是看到一个赋值。
while(elem = document.getElementById("optionsDiv"+g))
第 140 行的问题:预期为 '' 而看到的是 'return'。
return g;
function isAnyOptionVisible()
var g=0;
while(elem = document.getElementById("optionsDiv"+g))
if(elem.className==="optionsDivVisible")
return g;
g++;
return -1;
【问题讨论】:
【参考方案1】:条件没有任何问题,只是elem
可能是全局的,如果它没有在外部范围内声明。如果未声明,请提前声明:
var elem, g=0;
如果你想让 JSLint 开心,你可以给 null 添加显式比较:
while((elem = document.getElementById("optionsDiv"+g)) !== null)
我没有看到任何关于“预期 ”的内容。但是,将 g++ 与大括号放在同一行是一种奇怪的风格。
请记住,JSlint 部分与 Crockford 的个人偏好有关,您不必总是同意。
编辑:好的,第二个错误是因为 JSLint 希望您将返回值放在大括号中,例如:
if(elem.className==="optionsDivVisible")
return g;
g++;
这也是我喜欢编码的风格。我确实发现它避免了某些错误。然而,这又是主观的。明显的权衡是它增加了两条线。
【讨论】:
+1 Mattjew,对不起,我不小心放了自己的测试版本,请查看旧代码,以便更清楚地说明错误(我只是随机放置了一个括号,这不应该出现在我的问题中)好奇你可能改变答案和更好地放置大括号,如果有的话! 太棒了@Matthew 谢谢! PS你的名字让我想起了美国喜剧XNYX NewsRadio中我最喜欢的角色。它就像 Seinfield 一样被聪明的观众更好地理解。听说过 WNYX 新闻广播吗? @Sam,听说过,但没看过。以上是关于JSLINT 关于样式的警告或关于条件表达式的错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Sublime Text 2 中隐藏不必要的 JSLint 警告
JavaScript:错误 - “期望一个赋值或函数调用,而是看到一个表达式”?
eslint 或 jslint 中的 Javascript lambda/匿名函数长度警告