为什么JSLint在“return”之后抱怨“Unexpected”else?

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

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

错误:第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)); 

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

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

我发现w / jslint的是,如果你坚持规则 – 50%是荒谬的,但没有负面影响你的代码。 另外50%(左右)会给你带来好处。 所以为另外50%做。 这个特殊的例子迫使你明确的条件或类似的逆…而不是让它隐含与其他…同样适用于如果/其他我的意思。

最好有一个函数总是返回一些东西,因为它增加了一致性。 JSLint被认为是相当严格的,会伤害程序员的感觉。 不能帮助它。 我个人认为版本1是好的