Javascript变量永远不会被赋值
我有以下javascript,但由于某种原因,我的var响应总是设置为默认值false,即使结果为trueJavascript变量永远不会被赋值,javascript,node.js,Javascript,Node.js,我有以下javascript,但由于某种原因,我的var响应总是设置为默认值false,即使结果为true var response = false; connection.query('SELECT * FROM Something WHERE something = ?', [req.body.something], function(err, results) { if (results.length == 0) { response == false;
var response = false;
connection.query('SELECT * FROM Something WHERE something = ?', [req.body.something], function(err, results)
{
if (results.length == 0)
{
response == false;
}
else
{
hashedPassword = results[0].password;
var comparePassword = encrypt.comparePassword(req.body.user.password, hashedPassword, function(err,result)
{
if (err) {throw error;}
response == result;
console.log("res=" + response);
console.log('here ' + result);
res.send(result);
}
);
}
console.log("response " + response);
});
有什么想法吗?这是错误的-->
应该是:
response = result;
double==用于测试条件,single=用于赋值。这是错误的-->
response == result
应该是:
response = result;
double==用于测试条件,single=用于赋值
response == result
不会分配给响应
。你确定这就是你说的吗
不会分配给
响应
。您确定这是您输入的吗?将代码更改为,然后尝试::
var response = false;
connection.query('SELECT * FROM Something WHERE something = ?', [req.body.something], function(err, results)
{
if (results.length == 0)
{
response == false;
}
else
{
hashedPassword = results[0].password;
var comparePassword = encrypt.comparePassword(req.body.user.password, hashedPassword, function(err,result)
{
if (err) {throw error;}
response = result;
console.log("res=" + response);
console.log('here ' + result);
res.send(result);
}
);
}
console.log("response " + response);
})
此特定运算符
=
用于在循环内或一般情况下设置某些条件,它不会更改变量的值,=
用于赋值,赋值将更改变量的值。将代码更改为,然后重试:
var response = false;
connection.query('SELECT * FROM Something WHERE something = ?', [req.body.something], function(err, results)
{
if (results.length == 0)
{
response == false;
}
else
{
hashedPassword = results[0].password;
var comparePassword = encrypt.comparePassword(req.body.user.password, hashedPassword, function(err,result)
{
if (err) {throw error;}
response = result;
console.log("res=" + response);
console.log('here ' + result);
res.send(result);
}
);
}
console.log("response " + response);
})
这个特殊的操作符
=
用于在循环内部或一般情况下设置某些条件,它不会更改变量的值,=
用于赋值,赋值会更改变量的值。看起来像是因为比较密码
是异步的。是的,用户:罗布尼克在回答中提到。赋值运算符是=
而不是=
比较运算符是异步的。我有一个回调,所以它需要等待响应后才能继续。另外,最好将res.send放在回调中。如果我把它放在外面,它会立即运行吗?是的,res.send(result)
需要在回调中。看起来这是因为comparePassword
是异步的。是的,以及用户:robnick在回答中提到的内容。赋值运算符是=
而不是=
比较运算符是异步的。我有一个回调,所以它需要等待响应后才能继续。另外,最好将res.send放在回调中。如果我把它放在外面,它会立即运行吗?是的,res.send(result)代码>需要位于回调内部。