JSLint错误:“中断后不必要”

时间:2013-10-14 13:51:56

标签: javascript function if-statement jslint

我想知道如何重新编写此函数来解决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
    };
  }
};

3 个答案:

答案 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 PointEarly 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
  };

};

在这种情况下,它并不重要,但是早期退出(returnbreak等)的现实代码比“单退出”更容易阅读和维护{ {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 };
};