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
?