2015-11-11 17 views
6

Dovrei ottenere un numero che è divisibile per due e lo sto facendo. Non sono sicuro del motivo per cui il mio codice non funzioni. Sto facendo questo in un corso per imparare javascript. L'errore che ottengo è questo:se l'istruzione non restituisce true

Oops, riprovare. Sembra che la funzione restituisca false quando numero = 2. Verifica se il tuo codice all'interno dell'istruzione if/else restituisce correttamente true se il numero che riceve è pari.

la domanda è questa:

Scrivi un if/else all'interno della funzione isEven. Dovrebbe restituire true; se il numero che riceve è equamente divisibile per 2. Altrimenti (altro), dovrebbe restituire falso ;. Assicurati di tornare - non utilizzare console.log()!

Il mio codice

var isEven = function(number) { 
// Your code goes here! 
    if(4 % 2) { 
     return true; 
    } else { 
     return false; 
    } 
}; 

Che cosa sto facendo di sbagliato?

+4

'4' dovrebbe essere' numero' –

+0

Quindi dove definire il numero? – Becky

+0

'number' è il parametro formale della tua funzione – Pointy

risposta

3

Le altre risposte sono corrette al momento sto scrivendo questo, ma per spiegare

var isEven = function(number) { 
// Your code goes here! 
    if(4 % 2) { 
     return true; 
    } else { 
     return false; 
    } 
}; 

% questo è l'operatore di divisione modulo. Quindi restituisce un valore. Modulus ti dice il resto rimasto dopo la divisione. Quindi 4 modulo 2 restituisce 0 poiché non è rimasto nulla. Quindi il motivo per cui è necessario controllare contro il valore restituito

var isEven = function(number) { 
// Your code goes here! 
    if(4 % 2 == 0) { 
     return true; 
    } else { 
     return false; 
    } 
}; 

Se non c'è resto si tratta di un numero pari perché 2 diviso uniformemente con niente sopra. Quindi 3 modulo 2 restituisce 1 poiché 2 divide tre una volta e lascia 1 rimasto.

Come per il commento qui sotto (pare è stato eliminato), sembra quando si parla di numeri negativi e positivi v'è una differenza tra il modulo e il resto, ma per senso stretto javascript operatore questo è ciò che viene definito come:

L'operatore rimanente restituisce il resto rimasto quando un operando viene diviso per un secondo operando. Porta sempre il segno del dividendo, non il divisore. Usa una funzione modulo incorporata per produrre il risultato, che è il resto dell'intero di dividere var1 per var2 - per esempio - var1 modulo var2.Esiste una proposta per ottenere un vero operatore modulo in una versione futura di ECMAScript, con la differenza che il risultato dell'operatore modulo assumerebbe il segno del divisore, non il dividendo.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators

Inoltre avete hard coded 4 nella if così sarà sempre return true! Il parametro della funzione è il numero.

var isEven = function (number) { 
    // Your code goes here! 
    if (number % 2 == 0) { 
     return true; 
    } 
    else { 
     return false; 
    } 
}; 
+0

Grazie per l'ottima risposta! Perché altri stavano dicendo di usare il parametro numero. Non l'ho mai definito, quindi come potrebbe essere vero se 'number% 2 === 0 '. Ho provato questo ed era corretto. Non capisco perché. – Becky

+0

@Becky Vedere nella riga di definizione della funzione "var isEven = function (number) {", all'interno delle parentesi dopo la funzione è dove si definiscono gli input oi parametri di una funzione. Hai definito un parametro chiamato numero. Questo è così puoi passare un valore e testarlo contro la funzione. Così ogni volta che lo fai: isEven (30) all'interno della funzione il numero del parametro ora contiene il valore 30. Inoltre nessun problema! Felice di aiutare =] – AtheistP3ace

+0

Gotcha, quindi sto solo facendo un'istruzione if e più tardi se fornirò un valore a 'number', lo testerà. – Becky

9

Prova questo

var isEven = function(number) { 
 
    if(number % 2 === 0) { 
 
     return true; 
 
    } else { 
 
     return false; 
 
    } 
 
}; 
 

 
console.log(isEven(4)); 
 
console.log(isEven(3)); 
 
console.log(isEven(6));

più bello in una sola riga

var isEven = function(number) { 
 
    return number % 2 === 0; 
 
}; 
 

 
console.log(isEven(4)); 
 
console.log(isEven(3)); 
 
console.log(isEven(6));

2

In if 4%20 e che dà false in caso di stato questo è il motivo per cui non funziona.

cambiamento se dichiarazione

if(4%2==0) 
Problemi correlati