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

JavaScript-即使条件未满足也返回true,javascript,if-statement,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(usernameExi

我有以下代码:

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,但我仍然收到一条控制台消息“returning true”,其中的函数返回true!我就是搞不懂。要检查条件,需要使用“==”运算符表示赋值运算符。 而“==”检查值和类型。
希望这就是问题所在。

要检查条件,需要使用“==”运算符表示赋值运算符。 而“==”检查值和类型。
希望这就是问题所在。

在您的情况下,您使用的是单一的同等产品!!! 因此,这是一个分配操作,而不是比较!因此,您没有检查变量是否等于true,而是将其赋值为true,并且由于赋值操作成功,因此同时满足了条件

将其更改为两个或三个等号
=
==
,而不是
=

这里很好地解释了
=
==
之间的用法和区别:


在您的条件下,您使用的是单一的同等产品!!! 因此,这是一个分配操作,而不是比较!因此,您没有检查变量是否等于true,而是将其赋值为true,并且由于赋值操作成功,因此同时满足了条件

将其更改为两个或三个等号
=
==
,而不是
=

这里很好地解释了
=
==
之间的用法和区别:


=
是一个赋值,因此您将变量设置为true,这本身使if语句为true。您需要检查变量是否设置为true。为此,请使用
=
==
运算符

=
是一个赋值,因此您将变量设置为true,这本身使if语句为true。您需要检查变量是否设置为true。为此,请使用
=
==
运算符

条件始终为
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;
}

该条件始终为
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;
}

使用“==”或“==”。现在,您正在使用赋值运算符。您可以使用
if(usernameExists)
Ok,这么多答案都说了同样的话!我知道我做错了什么,谢谢你们!我会在7分钟后接受答案,因为不要让我这么快接受答案。使用“==”或“==”。现在,您正在使用赋值运算符。您可以使用
if(usernameExists)
Ok,这么多答案都说了同样的话!我知道我做错了什么,谢谢你们!我会在7分钟后接受答案,因为不要让我这么快接受答案。好吧,这么多答案都说了同样的话!我知道我做错了什么,谢谢你们!好吧,这么多答案都是一样的!我知道我做错了什么,谢谢你们!好吧,这么多答案都是一样的!我知道我做错了什么,谢谢你们!好吧,这么多答案都是一样的!我知道我做错了什么,谢谢你们!好吧,这么多答案都是一样的!我知道我做错了什么,谢谢你们!好吧,这么多答案都是一样的!我知道我做错了什么,谢谢你们!然而,我没有投反对票:答案并不能真正解释最初的问题。这并不是困扰我的问题,但留下错误的代码只是注释掉了——我不想在答案中留下这一点。然而,我没有投反对票:答案并不能真正解释最初的问题。这并不是困扰我的问题,但留下错误的代码只是注释掉了——我不想在答案中留下这一点。