我想知道如何重新编写此函数来解决JSLint错误“中断后不必要的其他问题”。我理解这个错误的基础知识,并且已经重写了像
这样的模型的功能 myFunction.doThing = function () {
if (user.likesCats) {
return patCat;
}
else (user.likesDogs {
return patDog;
}
};
取而代之的是:
myFunction.doThing = function () {
if (user.likesCats) {
return patCat;
}
return patDog;
};
但我不确定如何修复此函数中的if,else if,else构造,以使其符合JSLint的“在休息后不再继续使用不必要的其他”规则:
myFunction.getRange = function () {
if (this.settings.allowedValues) {
return {
min: Min,
max: Max
};
} else if (this.settings.range) {
return {
min: range[0],
max: range[1]
};
} else {
return {
min: 0,
max: 1
};
}
};
答案 0 :(得分:5)
你不是只设置一个变量而不是返回它
myFunction.getRange = function () {
var range;
if (this.settings.allowedValues) {
range = {
"min": Min,
"max": Max
};
} else if (this.settings.range) {
range = {
"min": range[0],
"max": range[1]
};
} else {
range = {
"min": 0,
"max": 1
};
}
return range;
};
答案 1 :(得分:4)
基本上有两种方法:Single Exit Point与Early Exit。我个人更喜欢后者:
myFunction.getRange = function () {
if (this.settings.allowedValues) {
return {
min: Min,
max: Max
};
}
if (this.settings.range) {
return {
min: range[0],
max: range[1]
};
}
return {
min: 0,
max: 1
};
};
在这种情况下,它并不重要,但是早期退出(return
,break
等)的现实代码比“单退出”更容易阅读和维护{ {1}}分支和临时变量。
答案 2 :(得分:0)
摆脱最后的决定 - 不需要它。如果不满足先前的条件,则无论如何都将返回这些值。
myFunction.getRange = function () {
if (this.settings.allowedValues) {
return {
min: Min,
max: Max
};
} else if (this.settings.range) {
return {
min: range[0],
max: range[1]
};
}
return { min: 0, max: 1 };
};