为什么JSLint会在'返回'之后抱怨"意外'其他'"?

Hal*_*Hal 56 javascript jslint

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

(function (x) {
    "use strict";
    if (x === 1) {
        return 1;
    } else if (x === 2) {
        return -1;
    }
    return 0;
}(1));
Run Code Online (Sandbox Code Playgroud)

错误:第4行字符9处的问题:"返回"后出现意外的"其他".

返回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));
Run Code Online (Sandbox Code Playgroud)

geo*_*org 92

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

(function (x) {
    "use strict";
    if (x === 1) {
        return 1;
    }  
    if (x === 2) {
        return -1;
    }
    return 0;
}(1));
Run Code Online (Sandbox Code Playgroud)

  • 你是对的.我个人更喜欢if-else链,但感觉它更清楚地表达了代码的意图. (53认同)
  • @Hal在重构时特别有用,当你真正决定使用单个`return`时.省略的`else`将是一个错误. (2认同)