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

JSLint error: "unnecessary else after disruption"

本文关键字:不必要 其他 中断 错误 JSLint      更新时间:2023-09-26

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

你不是只设置一个变量而不是返回它吗

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

基本上有两种方法:单一退出点与提前退出。我个人更喜欢后者:

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等)的真实代码比具有许多else分支和临时变量的"单个出口"更容易阅读和维护。

只需摆脱最后的 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 };
};