我有以下代码:
console.log(usernameExists);
if (usernameExists = true) {
console.log("returning true");
return true;
} else if (looped = true) {
console.log(usernameExists+" is returned");
looped = null;
return false;
}
第一个console.log(usernameExists)
返回false,但我仍然收到一条控制台消息"返回true",并且这个函数返回true!我根本无法解决这个问题。
答案 0 :(得分:1)
=
是一个赋值,因此您将变量设置为true,这本身使if语句成立。你想要的是检查变量是否设置为true。为此,请使用==
或===
运算符。
答案 1 :(得分:0)
要检查条件,您需要使用'=='运算符。 '='表示赋值运算符。 而'==='检查值和类型。 希望这是问题。
答案 2 :(得分:0)
在你的条件下,你使用单一的平等! 因此,它是一个分配操作,而不是比较!因此,您没有检查您的变量是否等于true,但是您将其分配为true,并且由于您的分配操作成功,因此您的条件同时满足。
将其更改为两个或树等于==
或===
而不是=
==
和===
之间的用法和差异在这里得到了很好的解释:
Which equals operator (== vs ===) should be used in JavaScript comparisons?
答案 3 :(得分:0)
条件始终为true
,因为您将此值分配给变量,这是为if
子句计算的值。
但您可以使用没有比较值的直接检查(并且不指定此值)。
除此之外,您可以将else
部分更改为if
部分,因为您使用return
退出该功能,因此在这种情况下不再发生else
if (usernameExists) {
console.log("returning true");
return true;
}
if (looped) {
console.log(usernameExists+" is returned");
looped = null;
return false;
}