如何在JavaScript中将字符串转换为布尔值?

我可以将代表布尔值的字符串(例如'true','false')转换为JavaScript中的内部类型吗?

我在HTML中有一个隐藏表单,根据用户在列表中的选择进行更新。 这个表单包含一些表示布尔值的字段,并用一个固有的布尔值动态填充。 但是,一旦将此值放入隐藏的输入字段中,它就会变成一个字符串。

一旦将字段转换为字符串,我可以发现确定字段布尔值的唯一方法是依赖于字符串表示形式的字面值。

var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';

有没有更好的方法来完成这一点?


做:

var isTrueSet = (myValue == 'true');

您可以使用身份运算符( === )使其更严格,当比较变量具有不同类型时,不会进行任何隐式类型转换,而不是等号运算符( == )。

var isTrueSet = (myValue === 'true');

别:

您应该谨慎使用这两种方法来满足您的特定需求:

var myBool = Boolean("false");  // == true

var myBool = !!"false";  // == true

任何不是空字符串的字符串都将通过使用它们评估为true 。 尽管它们是我可以想到的关于布尔转换的最干净的方法,但我认为它们不是您想要的。


警告

这个高度支持的遗留答案在技术上是正确的,但只包含一个非常具体的场景,当你的字符串值完全是"true""false" (必须是小写)。

传递给下面这些函数的无效json字符串将会抛出异常


原始答案:

怎么样?

JSON.parse("true");

或与jQuery

$.parseJSON("true");

stringToBoolean: function(string){
    switch(string.toLowerCase().trim()){
        case "true": case "yes": case "1": return true;
        case "false": case "no": case "0": case null: return false;
        default: return Boolean(string);
    }
}
链接地址: http://www.djcxy.com/p/2097.html

上一篇: How can I convert a string to boolean in JavaScript?

下一篇: What does a tilde do when it precedes an expression?