基于Else / If In的警报

时间:2014-02-01 19:56:00

标签: javascript if-statement

编码很新。我正在测试是否可以基于变量进行警报显示。我有以下代码,我试图找出为什么,在其当前状态,它没有显示“再见”警报。这是代码:

document.getElementById("square").onclick=square;
function square(){
    var test="a";
    if (test="v") {
        alert("hi");
    }
    else{
        alert("bye");
    }
}

4 个答案:

答案 0 :(得分:1)

在你的if语句中,你需要写:

if (test === "v") {
    alert("hi");
}

您现在的方式是,if (test="v")在评估test语句之前将变量v设置为值if。这基本上与这样做相同:

function square() {
    test = "a";
    test = "v";
    if (test) {
        alert("hi");
    } else {
        alert("bye");
    }
}

此处,if(test)只询问变量test不是nullundefined还是空字符串''。由于您的变量的值为"v",因此if(test)始终为true,因此始终会运行alert('hi')

答案 1 :(得分:1)

您正在使用=这是一个赋值运算符。

问题在于

 if (test="v") {

而不是=,请使用

 if (test== "v") {

OR

 if (test==="v") {

标识(===)运算符的行为与相等(==)运算符的行为相同,但不进行类型转换,并且类型必须相同才能被视为相等。

答案 2 :(得分:0)

因为您使用=代替==来将变量测试与值v进行比较。

等于运算符用于赋值:您使用它来为变量赋值。 赋值表达式返回您指定的值,因此,在您的情况下,v

因为在javascript中,每个非空字符串都被强制为true布尔值,所以你的if分支被执行。

您应该使用=====运算符。


==运算符将两个值强制转换为相同类型,如果它们相等则返回true。所以,例如,

2 == 1 + 1 =>真

但也

"2" == 1 + 1 =>真


===运算符用于严格相等。它不强制值类型,只有在类型和值都相等时才返回true。所以,例如,

2 == 1 + 1 =>真

"2" == 1 + 1 =>假

因为您要将字符串与数字进行比较

答案 3 :(得分:0)

要检查条件,您应使用a == b检查值a是否等于值b 在您的代码中,您将测试变量的值设置为' v'