如何在Javascript中比较字符串和布尔值?

如何在Javascript中比较字符串和布尔值?,javascript,string,comparison,boolean-logic,boolean,Javascript,String,Comparison,Boolean Logic,Boolean,我从服务器上获得了Json“false”。我的回答是bool,但它是Json,所以在浏览器中,它的类型是String,而不是bool 因此,如果每当我想检查“false”==false时都运行(!data),那么它们就不起作用了 那么如何在JavaScript中解析bool中的String “true”==true和“false”==false。然后代码(!data)可以检查它是什么[true和false] String.prototype.revalue= function(){ if(/

我从服务器上获得了Json
“false”
。我的回答是
bool
,但它是Json,所以在浏览器中,它的类型是
String
,而不是
bool

因此,如果每当我想检查
“false”==false
时都运行
(!data)
,那么它们就不起作用了

那么如何在JavaScript中解析
bool
中的
String

“true”==true
“false”==false
。然后代码
(!data)
可以检查它是什么[
true
false
]

String.prototype.revalue= function(){
  if(/^(true|false|null|undefined|NaN)$/i.test(this)) return eval(this);
  if(parseFloat(this)+''== this) return parseFloat(this);
  return this;
}
发件人:

实际上,您只需要函数中的第一个“if”语句——测试代码中的true或false,然后
eval
s将其转换为布尔值

Try expression data==“true”

测试:

data=“false”--值将为false

date=“true”--值将为true


另外,修复JSON。JSON可以很好地处理布尔值。

我只需要显式地检查字符串
“true”

否则,您可以使用将其转换为本机JavaScript值,但如果您知道这只是您将收到的字符串
“true”
“false”

如果它只是一个json“false”/“true”,您可以使用

if(! eval(data)){
    // Case when false
}
如果您将代码限制为只接受来自服务器的JSON数据,并始终将其jsonParse或eval到JS对象(类似于jquery getJSON。它只接受JSON响应,并在传递到回调函数之前将其解析到对象),则会更干净

这样,您不仅可以从服务器获取布尔值作为布尔值,还可以保留所有其他数据类型,然后可以使用例程表达式语句,而不是特殊的表达式语句


愉快的编码。

我认为您需要了解JSON数据是如何生成的。在JSON中,您肯定可以有一个正常的JS布尔值false

{“value1”:false,“value2”:true}

如果其中一个操作数是布尔操作数,则布尔操作数在为真时转换为1,在为假时转换为+0。(来自)

示例:

true == "true"; //false
true == "1"; //true
false == "false"; //false
false == ""; //true
false == "0"; //true
这个很好用

if(data+''=='true'){
    alert('true');
}  

通过附加空白字符串将布尔值转换为字符串。然后与Stringobject进行比较。

要比较JavaScript中的字符串和布尔值,让我们看看以下示例。它返回true:

false == "0"; //true
true == "1"; //true
false == ""; //true
以下返回值为false:

false == "false"; //false
true == "true"; //false
此外,还可以尝试以下示例:

var data = true;
data === "true" //false
String(data) === "true" //true

向基类(如字符串)添加函数往往会带来可维护性和清晰性问题。虽然我很聪明——也许我只是一个严格遵守类型安全的人——但我不会在一百万年内鼓励任何人将此代码用于任何实际目的,因为.JSON.parse()会将服务器布尔值解码为javascript布尔值,因此,您可以调用(!myJSONObject.myBool),它比eval更值得推荐。这真是太过分了。简单地根据“true”测试字符串值至少同样有效。除了完全满足他的需要外,它还具有普遍的可移植性。@chomp它确实回答了一个问题:如何在JavaScript中从字符串解析bool?但是,我只想检查字符串
'false'
。在这一点上,它变成了一个小参数,因为暗示“banana”为真并不比暗示“banana”为假更有效我后来发现了这个东西,因为project没有这个[json.js]。我使用jQuery.parseJSON()。谢谢
false == "false"; //false
true == "true"; //false
var data = true;
data === "true" //false
String(data) === "true" //true