JavaScript - 即使条件未满足,也返回true

时间:2017-11-01 09:21:33

标签: javascript if-statement

我有以下代码:

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!我根本无法解决这个问题。

4 个答案:

答案 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;
}