JavaScript IF 语句 boolean 严格

标签 javascript jquery html if-statement boolean

我通过将“truthy” boolean 值传递给函数来在脚本中设置模式。在函数中,一个简单的 if 语句检查参数是 true 还是 false。我有时将它作为字符串或 boolean 值传递,这一直有效,但由于某种原因,它不是这样的:

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

例如,当我向其传递一个字符串 'false' 并将 Setting 记录到控制台时,控制台显示 false,但 >if 语句认为它是真的。

我必须将其添加到函数的开头才能使其正常工作:

if (typeof 设置 == '字符串') { 设置=(设置==“真”); }

它的使用示例:

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

还有另一个:

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

这太奇怪了,因为我已经做了这种事情很多年了,但现在才刚刚开始。也许是因为我正在使用 localStorage.prop

最佳答案

如果您尝试记录'false',很明显控制台会记录false(它是一个字符串)并且if语句看到true,因为非空字符串是真正的 boolean 值。

如果您想检查字符串是“true”还是“false”,您必须使用普通运算符来完成。因此,您可以在函数的开头添加这一行:

Setting = (typeof Setting === 'string') ? Setting === "true" : Setting;

关于JavaScript IF 语句 boolean 严格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758477/

相关文章:

javascript - 如何将 observableArray 中的 observable 复制到另一个 observableArray?

javascript - 找到匹配的单词并在它们下划线 - 但只是单词

ipad - 在 UIWebView 中运行 HTML5/CSS3

c# - 如何在 iframe 中加载网页

javascript - Jquery如何更改$(this)选择器中某个类的文本

html - css3 灰色图像使用过滤器到蓝色?

html - Bootstrap 中的响应式表单

c# - 捕获嵌入 winform 的网站上触发的事件

javascript - IE 8 iFrame 仅在首次加载时导致 JavaScript 错误

javascript - 带有 rowspan 调整大小和困惑 UI 的 dataTable 标题