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

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

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

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

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


当前回答

const result: Boolean = strValue === "true" ? true : false

其他回答

我有点晚了,但我有一个小片段要做,它本质上维护了所有JScripts truthey/falsey/dirty ness,但包含“false”作为false的可接受值。

与上述方法相比,我更喜欢这种方法,因为它不依赖第三方来解析代码(即:eval/JSON.parse),这在我看来是过度的,它足够短,不需要实用函数,并维护其他truthey/falsy约定。

var value = "false";
var result = (value == "false") != Boolean(value);

// value = "true"  => result = true
// value = "false" => result = false
// value = true    => result = true
// value = false   => result = false
// value = null    => result = false
// value = []      => result = true
// etc..

Boolean.parse()在某些浏览器实现中确实存在。它肯定不是通用的,所以如果这是你需要的东西,你不应该使用这种方法。但以Chrome为例(我使用的是v21),它工作得很好,正如人们所期望的那样。

我发现,对布尔值使用“1”和空值“”比使用“true”或“false”字符串值更有效。。。特别是对于html表单,因为Dom元素中的未初始化/空值将始终求值为false,而其中的任何值都求值为true。

例如:

<input type='button' onclick='this.value = tog(this.value);' />

<script type="text/javascript">

    function tog(off) {
        if(off) {
            alert('true, toggle to false');
            return '';
        } else {
            alert('false, toggle to true');
            return '1';
        }
    }   
</script>

似乎是一条更容易的路,到目前为止,这条路一直很稳定/容易。。。也许有人能找到打破这种局面的方法?

我认为这是非常普遍的:

if(字符串(a).toLowerCase()==“true”)。。。

它说:

String(true) == "true"     //returns true
String(false) == "true"    //returns false
String("true") == "true"   //returns true
String("false") == "true"  //returns false

我在用这个

String.prototype.maybeBool = function(){

    if ( ["yes", "true", "1", "on"].indexOf( this.toLowerCase() ) !== -1 ) return true;
    if ( ["no", "false", "0", "off"].indexOf( this.toLowerCase() ) !== -1 ) return false;

    return this;

}

"on".maybeBool(); //returns true;
"off".maybeBool(); //returns false;
"I like js".maybeBool(); //returns "I like js"