JavaScript IF declaración booleana estricta

Estoy configurando un modo en un script al pasar un booleano "de verdad" a una función. En la función un simple.if cheques de estado si el parámetro estrue ofalse. A veces lo paso como una cadena o un bool que siempre ha funcionado, pero por alguna razón no es por esto:

setMode: function(Setting) {    
    if (Setting) {
        console.log('Enabling mode');
    } else {
        console.log('Disabling mode');
    }
}

Por ejemplo cuando le paso una cadena.'false' y registroSetting a la consola, la consola dicefalse, sin embargo, elif La declaración piensa que es verdad.

Tengo que agregar esto al inicio de la función para que funcione:

if (typeof Setting == 'string') {Setting = (Setting == "true"); }

Un ejemplo de ello en uso:

var inverted = $('INPUT[name="Mode"]').prop('checked');
app.setMode(inverted);

y otro:

var mode = localStorage.getItem('Mode');
this.setMode(mode);

Es tan extraño ya que he hecho este tipo de cosas durante años, pero solo está empezando ahora. Tal vez porque estoy usandolocalStorage y.prop?

Respuestas a la pregunta(3)

Su respuesta a la pregunta