¿La forma correcta de establecer el parámetro predeterminado de una función en un booleano?

Tengo una función read() que toma como un parámetro booleano. Si se pasa false , read(false) , no debería ejecutar un bloque de código. Funciona con las tres variaciones a continuación, pero no estoy seguro de la diferencia entre ellas o si importa.

Pero no entiendo la diferencia entre las variaciones.

Todas estas tres variaciones funcionan.

 this.first_time_here = first_time_here !== false; var first_time_here = first_time_here !== false; var first_time_here = first_time_here || false; 

función de lectura

  function read (first_time_here) { var first_time_here = first_time_here !== false; // check to see what the function thinks first_time_here is console.log("first time here is: " + first_time_here); if (typeof first_time_here === 'boolean') { console.log('Yes, I am a boolean'); } if (first_time_here) { // do something if true }; }; 

Gracias

Si está esperando valores falsey, use typeof :

 var x = typeof x !== 'undefined' ? x : false; 

De lo contrario, si haces esto:

 var x = x || true; 

Y pasar en false , el valor de x será true .

Es porque el concepto de conversión automática en Javascript, el valor undefined convierte en false . Entonces, tres líneas son similares para asegurar que la variable first_time_here sea false , no undefined .

Si first_time_here undefined está undefined :

 first_time_here = undedined !== false -> first_time_here = false != false -> first_time_here = false; 

Y:

 first_time_here = undedined || false -> first_time_here = false || false -> first_time_here = false;