Sam*_*Sam 3 javascript debugging conditional expression jslint
我正在尝试解决JSLINT警告我不知道如何解决的两件事.应该用哪些代码替换哪一行?我已经粘贴了有问题的代码以及下面的警告.非常感谢你的建议/答案.
JSLINT说:
第137行的问题:预期条件表达式,而是看到一个赋值.
while(elem = document.getElementById("optionsDiv"+g))
第140行的问题:预期'{'而是看到'返回'.
return g;
function isAnyOptionVisible()
{
var g=0;
while(elem = document.getElementById("optionsDiv"+g))
{
if(elem.className==="optionsDivVisible")
return g;
g++;
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
条件没有任何问题,除非elem它不在外部范围内声明,因此可能是全局的.如果没有声明,请事先这样做:
var elem, g=0;
Run Code Online (Sandbox Code Playgroud)
如果要使JSLint满意,可以向null添加显式比较:
while((elem = document.getElementById("optionsDiv"+g)) !== null)
Run Code Online (Sandbox Code Playgroud)
我没有看到任何关于"预期{"的信息.但是,将g ++放在与大括号相同的行上是奇怪的风格.
请记住,JSlint部分是关于Crockford的个人偏好,您并不总是同意这一点.
编辑:好的,第二个错误是因为JSLint希望您将返回值放在大括号中,例如:
if(elem.className==="optionsDivVisible")
{
return g;
}
g++;
Run Code Online (Sandbox Code Playgroud)
这也是我喜欢编写的样式.我发现它避免了某些错误.然而,这又是主观的.显而易见的权衡是它增加了两行.