【问题标题】:JSLINT warning about style or error about Conditional ExpressionJSLINT 关于样式的警告或关于条件表达式的错误
【发布时间】: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;
}

【问题讨论】:

    标签: javascript debugging conditional expression jslint


    【解决方案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,听说过,但没看过。
    猜你喜欢
    • 2020-04-22
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多