Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript变量永远不会被赋值_Javascript_Node.js - Fatal编程技术网

Javascript变量永远不会被赋值

Javascript变量永远不会被赋值,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;

我有以下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;
    }
    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)需要位于回调内部。