2014-06-20 17 views
7

ho usato typeof foo !== 'undefined' per testare i parametri facoltativi a funzioni JavaScript, ma se voglio questo valore sia true o false ogni volta, quello che è il più semplice o più veloce o più approfondita modo? Sembra che potrebbe essere più semplice di così:impostare un valore predefinito per un parametro booleano in una funzione javascript

function logBool(x) { 
    x = typeof x !== 'undefined' && x ? true : false; 
    console.log(x); 
} 

var a, b = false, c = true; 
logBool(a); // false 
logBool(b); // false 
logBool(c); // true 

risposta

15

Si potrebbe saltare il ternario, e valutare il "no non x", ad esempio, !!x.

Se x non è definito, !x è vero, quindi !!x diventa nuovamente falso. Se x è vero, !x è falso, quindi !!x è true.

function logBool(x) { 
    x = !!x; 
    console.log(x); 
} 

var a, b = false, c = true; 
logBool(a); // false 
logBool(b); // false 
logBool(c); // true 
+0

Ahhh perfetto, esattamente quello che stavo cercando, grazie. – jrode

+0

qualcuno per favore proteggi questa risposta :) –

Problemi correlati