0

私はプログラミングに非常に慣れていないので、私の愚かな質問を許してください。同じ入力「金額」に基づいて税率を計算する 3 つの関数を作成しました。ユーザーが一度金額を入力して、3 つの関数すべてから戻り値を取得できる方法を見つけようとしています。ここにそれらは以下にあります。

//Function 1
var normalrtfCalculator = function (amount) {
  if (amount <= 150000) {
    return Math.ceil(amount / 500) * 2;
  } else if (amount <= 350000) {
    if ((amount - 150000) <= 50000) {
      return 600 + (Math.ceil((amount - 150000) / 500) * 3.35);
    } else {
      return 935 + (Math.ceil((amount - 200000) / 500) * 3.9);
    }
  } else {
    if ((amount - 200000) <= 350000) {
      return 2735 + (Math.ceil((amount - 200000) / 500) * 4.8);
    } else if ((amount - 550000) <= 300000) {
      return 4655 + (Math.ceil((amount - 555000) / 500) * 5.3);
    } else if ((amount - 850000) <= 150000) {
      return 7835 + (Math.ceil((amount - 850000) / 500) * 5.8);
    } else {
      return 9575 + (Math.ceil((amount - 1000000) / 500) * 6.05);
    }
  }
};
//Function 2
var mansionTax = function (amount) {
  if (amount > 1000000) {
    return amount * 0.01;
  }
};
//Function 3
var lowincomertfCalculator = function (amount) {
  if (amount <= 350000) {
    if (amount <= 150000) {
      return (Math.ceil(amount / 500)) * 0.5;
    } else {
      return 150 + (Math.ceil((amount - 150000) / 500)) * 1.25;
    }
  } else {
    if ((amount - 150000) <= 400000) {
      return 420 + (Math.ceil((amount - 150000) / 500) * 2.15);
    } else if ((amount - 550000) <= 300000) {
      return 2140 + (Math.ceil((amount - 550000) / 500) * 2.65);
    } else if ((amount - 850000) <= 150000) {
      return 3730 + (Math.ceil((amount - 850000) / 500) * 3.15);
    } else {
      return 4675 + (Math.ceil((amount - 1000000) / 500) * 3.4);
    }
  }
};
4

2 に答える 2

1

他の関数を実行し、結果のオブジェクトを返す関数を用意するだけです:

var calculateTax = function(amount){
  return {
    rtf : normalrtfCalculator(amount),
    mansion: mansionTax(amnount),
    lowincome: lowincomertfCalculator(amount)
  }
}

次に、次のように呼び出すことができます。

var tax = calculateTax(99999);

個々の結果を取得するには、プロパティにアクセスするだけです。

alert(tax.rtf)alert(tax.mansion)およびalert(tax.lowincome)

于 2013-02-26T02:52:32.210 に答える
0

必要な最小限の変更は() 、変数に代入する前に追加するだけです。

何かのようなもの :

 var amount = 100;

 //Function 2
 var mansionTax = (function () {
     if (amount > 1000000) {
         return amount * 0.01;
     }
 })();

これが実際のサンプルです。

これにより、追加の関数を定義する必要がなくなります。

于 2013-02-26T02:55:12.313 に答える