我可以将表示布尔值的字符串(例如,'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);
}
}