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

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

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

一旦字段转换为字符串,我能找到确定字段的布尔值的唯一方法是依赖于其字符串表示的文字值。

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

有没有更好的方法来实现这一目标?


答案 1

狐狸

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

使用标识运算符 (),当比较的变量具有不同的类型时,它不会进行任何隐式类型转换。===

如果字符串为“true”,则将其设置为布尔值;如果字符串为“false”或根本没有设置,则将其设置为布尔值。isTrueSettruefalse


不要:

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

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

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

任何不是空字符串的字符串都将使用它们计算为。虽然它们是我能想到的关于布尔转换的最干净的方法,但我认为它们不是你想要的。true


答案 2

警告

这个高度赞成的旧式答案在技术上是正确的,但只涵盖一个非常具体的情况,当你的字符串值为 EXACT 或 ."true""false"

传递给以下这些函数的无效 json 字符串将引发异常


原答:

怎么样?

JSON.parse("True".toLowerCase());

或使用jQuery

$.parseJSON("TRUE".toLowerCase());