Задавам режим в скрипт, като предавам "истинско" булево значение на функция. Във функцията прост оператор if
проверява дали параметърът е true
или false
. Понякога го предавам като низ или bool, което винаги е работило, но по някаква причина не е за това:
setMode: function(Setting) {
if (Setting) {
console.log('Enabling mode');
} else {
console.log('Disabling mode');
}
}
Например, когато му предам низ 'false'
и регистрирам Setting
към конзолата, конзолата казва false
, но операторът if
смята, че е верен.
Трябва да добавя това в началото на функцията, за да работи:
if (typeof Setting == 'string') { Setting = (Setting == "true"); }
Пример за употреба:
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. - person John Dvorak   schedule 26.05.2013if
пак ще го види катоtrue
илиfalse
, ако е низ или булево, но не е в този случай. - person Jared   schedule 26.05.2013