编码很新。我正在测试是否可以基于变量进行警报显示。我有以下代码,我试图找出为什么,在其当前状态,它没有显示“再见”警报。这是代码:
document.getElementById("square").onclick=square;
function square(){
var test="a";
if (test="v") {
alert("hi");
}
else{
alert("bye");
}
}
答案 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
不是null
,undefined
还是空字符串''
。由于您的变量的值为"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'