【发布时间】:2013-05-21 10:37:21
【问题描述】:
我通过将“真实”布尔值传递给函数来在脚本中设置模式。在函数中,一个简单的if 语句检查参数是true 还是false。我有时将它作为一直有效的字符串或布尔值传递,但由于某种原因它不是为此:
setMode: function(Setting) {
if (Setting) {
console.log('Enabling mode');
} else {
console.log('Disabling mode');
}
}
例如,当我将字符串'false' 传递给它并将Setting 记录到控制台时,控制台显示false,但if 语句认为这是真的。
我必须将其添加到函数的开头才能使其工作:
if (typeof Setting == 'string') { 设置=(设置==“真”); }
使用示例:
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语句仍会将其视为true或false,但在这种情况下并非如此。 -
此外,我还尝试使用具有相同结果的复选框。
标签: javascript jquery html if-statement boolean