我正在阅读一本关于使用node,backbone和mongodb构建web应用程序的书。我从书中得到样本并遇到代码片段,这让我很困惑。
var login = function(email, password, callback) {
var shaSum = crypto.createHash('sha256');
shaSum.update(password);
Account.findOne({email:email,password:shaSum.digest('hex')},function(err,doc){
callback(null!=doc);
});
};
看一下回调函数的参数null!= doc,我知道在javascript中的意思是null不等于doc,但是为什么你可以将它作为参数使用呢。
答案 0 :(得分:4)
null!=doc
被评估为布尔值,结果传递给callback
,这就是全部。
与以下相同:
var docIsNull = null!=doc;
callback(docIsNull);
我不确定具体方法的结果,但只是提供回调true
或false
,doc
值是null
还是doc
我猜如果null
为login
,则表示找不到具有该特定密码的特定电子邮件。所以当你打电话给login("some email", "some password", function (authenticated) {
if (authenticated) {
// email/password found and matched
} else {
// no match
}
});
时,你可能会使用:
{{1}}
答案 1 :(得分:-2)
似乎正在进行如下。当调用该函数时,nul从doc继承一个真值,然后在处理回调函数时使用它。这里发生的事情是,当null被认为不等于doc时,回调函数将被处理,因为知道null不等于doc。如果我们更多地了解这个功能以及发生了什么,我可能会更精细,但到目前为止我所能说的就是正在发生的事情。