2016-10-25 4 views
0

私の機能に問題があります。私がcalculateTaxRate(10000、 "joint")と入力すると、10%の正しい答えが得られません。それは "会計士に電話してください"と戻っています。なぜそれがまだ起こっているのか分かりません。私にこれを説明するどんな助けも大いに感謝されるでしょう。税務機能に関する問題(/その他の場合)

function calculateTaxRate(salary, status) { 
if (status !== ("single" || "joint") || (salary > 74900)) { 
    return "Better call an accountant"; 
} else if (status == "single") { 
    if (salary <= 9225) { 
     return "10%"; 
    } else if (9226 <= salary && salary <= 37450) { 
     return "15%"; 
    } else { 
     return "25%"; 
    } 
} 
if (status == "joint") { 
    if (0 <= salary && salary <= 18450) { 
     return "10%"; 
    } else if (18451 <= salary && salary <= $74, 900) { 
     return "15%"; 
    } 
} 
} 
+5

'状態にMozillaの開発者用ドキュメントを参照してください==( "シングル" || "共同")'!あなたが考えることをしません - あなたはjavascriptの構文を学ぶ必要があります - それは無効ではありませんが、本質的に 'if status!==" single "'のみをチェックしています –

答えて

2

コード("single" || "joint")は「シングル」と評価されます。

expr1 || expr2と書かれたOR条件は、trueに変換できる場合はexpr1を返します。そうでなければ、expr2を返します。たとえば、次のように

true || false = true 
false || true = true 
"Single" || false = "Single" 
false || "Joint" = "Joint" 

IF条件のように記述する必要があります:

if ((status !== "single" && status !== "joint") || (salary > 74900)) { 

Logical Operators

関連する問題