5

我想知道如何重新编写这个函数来解决 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 的“休息后不要继续使用不必要的 else”规则:

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
    };
  }
};
4

3 回答 3

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;
};
于 2013-10-14T13:56:20.847 回答
3

基本上有两种方法:Single Exit Point vs. 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的“单退出”代码更容易阅读和维护。else

于 2013-10-14T13:57:27.360 回答
0

只需摆脱最后的 else - 它不是必需的。如果不满足前面的条件,它无论如何都会返回这些值。

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 };
};
于 2013-10-14T13:57:18.413 回答