Я устанавливаю режим в скрипте, передавая «правдивую» логическую функцию. В функции простой оператор if
проверяет, равен ли параметр true
или false
. Я иногда передать его в виде строки или логическое значение, которое всегда работал, но по какой-то причине это не так:JavaScript IF statement boolean strict
setMode: function(Setting) {
if (Setting) {
console.log('Enabling mode');
} else {
console.log('Disabling mode');
}
}
Например, когда я прохожу это строка 'false'
и войти Setting
в консоль, консоль говорит false
, но заявление if
считает, что это правда.
Я должен добавить это к началу функции для его работы:
если (TypeOf Настройка == 'строка') { Setting = (Настройка == "истина"); }
Примером этого в использовании:
var inverted = $('INPUT[name="Mode"]').prop('checked');
app.setMode(inverted);
и другое:
var mode = localStorage.getItem('Mode');
this.setMode(mode);
Это так странно, так как я сделал такого рода вещи в течение многих лет пока это только начинается. Может быть, потому, что я использую localStorage
и .prop
?
'localStorage' может хранить строки только. Я рекомендую доступ к LS, который всегда будет завернут в пару JSON.parse/stringify. –
Это имеет значение? Оператор 'if' по-прежнему будет считать его« истинным »или« ложным », если это строка или логическое значение, но это не так. – Jared
Кроме того, я также попытался использовать флажок с теми же результатами. – Jared