2017-05-27 9 views
0

であれば、「isEitherEvenOrAreBoth7」それらの少なくとも1つは偶数であるかどうかを返す、または、それらの両方がある7チェック入力それも、またはその両方私は与えられた二つの数字で関数を記述する必要がある番号

ので、私のコードはここまでです:

function isEitherEvenOrAreBoth7(num1, num2) { 
    if(num1 || num2 % 2 === 0) || (num1 && num2 === 7) { 
    return true; 
    } else { 
    return false; 
    } 
} 

var output = isEitherEvenOrAreBoth7(3, 7); 
console.log(output); // --> MUST RETURN false 

var output = isEitherEvenOrAreBoth7(2, 3); 
console.log(output); // --> MUST RETRUN true 

何らかの理由で、私の出力の両方が正しくない「true」を返します。 私の間違いが見えますか?

+0

でそれを書くことができます。しかし、それを説明する別の方法として...もし '' a''または '' b''が偶数ならば、JavaScriptは "' 'a''または**' 'b''が偶数なら"最初の部分は、 '' a''が 'a'が0でなければ真を返します。" a'が偶数ならば 'b'が偶数ならば"。 – Santi

答えて

2
function isEitherEvenOrAreBoth7(num1, num2) { 
    return (num1 % 2 === 0 || num2 % 2 === 0) || (num1 === 7 && num2 === 7) 
} 

あなたは、これはあなたがそれがないと思う何をしないというnum1 || num2 is even

0
if(num1 || num2 % 2 === 0) || (num1 && num2 === 7) 

よりも、個別に両方の数字上の論理チェックを実行する必要があります。 私は不足している括弧が質問を書いている間違いであると仮定しています。

num1 || num2 % 2 === 0num1 == true || num2 % 2 === 0

同じ原理がその本来のチェックでnum1 == true && num2 === 7

のように書くことができ

num1 && num2 === 7、限りNUM1が0ではないとして、機能に適用されると等価ですtrueを返します。

-1

あなたは他の人が指摘したように、あなたが個別にチェックする必要があります簡単な方法

function isEitherEvenOrAreBoth7(num1, num2){ 
    if(!num1){ 
     return false; 
    } 
    if(!num2){ 
     return false; 
    } 

    if(num1 == 7 && num2 == 7){ 
     return true; 
    } 
    if(num1 % 2 === 0 && num2 % 2 === 0){ 
     return true; 
    } 
    return false; 
} 
関連する問題