2017-05-27 22 views
0

我需要編寫一個函數給定兩個數字,「isEitherEvenOrAreBoth7的回報是否其中至少有一個是偶數,或者兩者都爲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 

由於某種原因,我的輸出結果都返回'真',這是不對的。 你能看到我的錯誤嗎?

+0

正如其他人所指出的那樣,你需要單獨檢查每個寫。但作爲解釋它的另一種方式......你不能做「如果'a'或'b'甚至是」,因爲JavaScript認爲是「如果'a' ... **或**'b'是偶數」。如果'a'不是0,那麼第一部分「If'a'」將返回true。你必須這樣做:「如果'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 === 0相當於num1 == true || num2 % 2 === 0

的原則同樣適用於

num1 && num2 === 7這可以寫成num1 == true && 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; 
}