有关条件表达式的样式或错误的JSLINT警告

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)

Mat*_*hen 6

条件没有任何问题,除非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)

这也是我喜欢编写的样式.我发现它避免了某些错误.然而,这又是主观的.显而易见的权衡是它增加了两行.