JavaScript IF.ELSE条件未输出预期值

JavaScript IF..ELSE Conditions not outputting expected value

本文关键字:输出 未输 IF ELSE 条件 JavaScript      更新时间:2023-09-26

我正在学习Javascript教程。我正在测试Boolean()函数和If…Else条件。

我在网站上有一个按钮。当我点击按钮时,它会显示布尔变量(myvar)的当前状态以及相应的状态(myvartxt)(即false表示"OFF",true表示"ON")。这样做的原因是,稍后我想切换LED的开/关,不想让它说false/true,而是开/关。

现在的问题是,当我点击按钮时,布尔值(myvar)的状态是false,这是正确的,但myvartxt变量在应该说OFF的时候是ON。我只是不明白。有什么想法吗?提前感谢您的帮助!

在这里快速测试代码:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<p id="demo1"></p>
<button onclick="myFunction()">Try it</button>
<script type="text/javascript">
function myFunction()
{
    //Initial state
    var myvar=new Boolean(0);
    var myvartxt = "OFF";
    //display current state of Boolean
    var x=document.getElementById("demo");
    x.innerHTML=myvar.toString();
    //display corresponding ON -> true, OFF -> false
    if (myvar) //INITIALLY THIS IS false (not a string) so why does it think this is true?
    {
        myvartxt = "ON"; 
    }
    else
    {
        myvartxt = "OFF";
    }
    var y=document.getElementById("demo1");
    y.innerHTML=myvartxt;
}
</script>
</body>
</html>

您正在使用new Boolean()创建一个新对象;JavaScript中的对象评估为CCD_ 7。

我认为,如果去掉new关键字并将Boolean()简单地用作函数,您将看到更符合预期的行为。

代码if (myvar)是错误的,它只是检查是否设置了myvar。你必须更改报表

if (myvar.toString() == true)

首先,jQuery

这可以这样重写:

// Perform logic when document is set and ready.
$(document).ready(function() { 
  var myvar = false; // No need for Boolean objects.
  $("demo").html(myvar.toString()); // Set the value of demo.
  myvar ? $("demo1").html("ON") : $("demo1").html("OFF"); // True/false ON/OFF in demo1
}

此外,JavaScript对平等测试来说很糟糕,看看这里,如果你有机会,请阅读本文。