【问题标题】:Why does JSLint complain about "Unexpected 'else' after 'return'"?为什么 JSLint 在 'return' 之后会抱怨“Unexpected 'else'”?
【发布时间】:2012-02-28 11:02:17
【问题描述】:

JSLint 抱怨以下(无用的示例)代码无效:

(function (x) {
    "use strict";
    if (x === 1) {
        return 1;
    } else if (x === 2) {
        return -1;
    }
    return 0;
}(1));

错误: 第 4 行字符 9 的问题:“return”后出现意外的“else”。

返回 1;

是否真的暗示在 if/else 结构中使用 return 语句是不好的?

觉得这个版本不错:

(function (x) {
    "use strict";
    var returnval = 0;
    if (x === 1) {
        returnval = 1;
    } else if (x === 2) {
        returnval = -1;
    }
    return returnval;
}(1));

【问题讨论】:

  • 有没有办法在 JSLint 中禁用这条规则?

标签: javascript jslint


【解决方案1】:

只是告诉你return之后的else是多余的。以下是好的:

(function (x) {
    "use strict";
    if (x === 1) {
        return 1;
    }  
    if (x === 2) {
        return -1;
    }
    return 0;
}(1));

【讨论】:

  • 你是对的。我个人更喜欢 if-else 链,感觉它更清楚地传达了代码的意图。
  • @Hal 在重构时特别有用,当您实际决定使用单个 return 时。省略的else 将是一个错误。
【解决方案2】:

我发现使用 jslint 的情况是,如果您遵守规则 - 50% 是荒谬的,但对您的代码没有负面影响。剩下的 50%(左右)会给你带来很大的好处。为其他 50% 做同样的事情。这个特定的示例迫使您明确说明条件或类似条件的逆...而不是让它隐含在 else...我的意思是 if / else 也是如此。

【讨论】:

  • 不同意。是的,50% 不会提供“没有负面影响”。但这仅与代码本身有关。想想未来的维护、即将到来的调试时间以及其他不像你那样编码或不是忍者的开发人员。 JSLint 在其严格模式下为您提供标准/规范化的编码方式,允许任何人与每个人一起阅读/理解/编码,而不考虑经验/技能或时间。是的,它很严格,很难尊重,但是当您的代码合规时,它就是“跨人类代码”。
【解决方案3】:

最好让一个函数总是返回一些东西,因为它增加了一致性。众所周知,JSLint 非常严格并且会伤害程序员的感情。帮不上忙。个人觉得第一版还不错

【讨论】:

    猜你喜欢
    • 2020-12-24
    • 2021-06-11
    • 1970-01-01
    • 2012-05-15
    • 2014-01-14
    • 2019-12-04
    • 1970-01-01
    • 2016-05-22
    • 2011-12-22
    相关资源
    最近更新 更多