bool如何在javascript中运行

时间:2017-07-03 11:36:54

标签: javascript

我正在研究那段不符合我预期的代码。 特别是条件。 在控制台日志中,我看到objekt.teamA为false,teamA为false,objekt.teamB为true,teamB为true,但第一个条件无任何理由被接受。

有人可以告诉我为什么会这样吗?

function wsConnect() 
            {
                var objekt = 
                {
                    teamA: document.getElementById('teamA').value,
                    teamB: document.getElementById('teamB').value
                };
                console.log("connect",wsUri);
                ws = new WebSocket(wsUri);
                ws.onmessage = function(msg) 
                {
                    obj = JSON.parse(msg.data);
                    lightsAv = obj.lights;
                    doorsAv = obj.doors;
                    electricAv = obj.electric;
                    teamA = obj.teamA;
                    teamB = obj.teamB;
                    console.log(objekt.teamA + " " + teamA + " " + objekt.teamB + " " + teamB);
                    //objekt.teamA is false, teamA is false, objekt.teamB is true, teamB is true
                    if(objekt.teamA && !teamA)
                    {
                        console.log("1st condition");
                    }
                    if(objekt.teamB && !teamB)
                    {
                        console.log("2nd condition");
                    }
                }
                ws.onopen = function() 
                {
                    document.getElementById('status').innerHTML = "connected";
                    console.log("connected");
                }
                ws.onclose = function() 
                {
                    document.getElementById('status').innerHTML = "not connected";
                    setTimeout(wsConnect,3000);
                }
            }

非常感谢。

2 个答案:

答案 0 :(得分:4)

您的主张:

  

objekt.teamA为false,teamA为false

您的代码:

var objekt = 
{
    teamA: document.getElementById('teamA').value,
    teamB: document.getElementById('teamB').value
};

objekt.teamA的值来自表单控件的value属性。这将始终是一个字符串

所以它不是false,而是"false"

非零长度的字符串 truthy



if ("false") {
    console.log("a true value")
}




您可以明确地测试该值:



var myVar = "false";

if (myVar !== "false") {
   console.log("It is true");
} else {
   console.log("It is false");
}




答案 1 :(得分:-1)

您正在检查变量是否具有真值。通过使用,

if( value ) { }

如果值不是,则评估为true:

  • 未定义
  • 的NaN
  • 空字符串("")
  • 0

要比较布尔值,您可以使用 -

if(varA === false && varB === true){ }