javascript:检查布尔值

Vin*_*C M 10 javascript

我有一个布尔值设置为表单中的隐藏变量,我有下面的JavaScript.

         $().ready(function() {

             var flag =  $('#popUpFlag').val();

             alert("flag = "+flag);

             if(flag){
                alert("flag is true");
             }else{
                alert("flag is false");
             }
        })
Run Code Online (Sandbox Code Playgroud)

这些是警报的输出.

         flag =
         flag is false


         flag = false
         flag is false


         flag = true
         flag is false
Run Code Online (Sandbox Code Playgroud)

我担心的是第三项产出.当标志为真时,为什么打印"flag is false",而不是"flag is true".我在IE8和FF 4中测试过它

欢迎提出建议.

Guf*_*ffa 16

不,您在隐藏字段中没有布尔值.字段中的值始终为字符串.

当您使用字符串值时,就好像它是一个布尔值,您会得到意外的结果.条件是假的,如果值是false,0,""null,但是字符串"false"两者都不是,所以它评估为true.

如果需要布尔值,则必须解析字符串.一种简单的方法是简单地检查字符串是否具有特定值:

var flag =  $('#popUpFlag').val() === 'true';
Run Code Online (Sandbox Code Playgroud)


Sha*_*ard 6

flag 是一个字符串,所以改为:

if (flag === "true") {
  //true
}
else if (flag === "false") {
  //false
}
Run Code Online (Sandbox Code Playgroud)

  • 并且"虚假"`应该是*真理*. (2认同)