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

これには基本的に 2 つのアプローチがあります:単一の終了点早期終了です。私は個人的に後者を好みます:

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 に答える