我正在读一本关于使用节点、 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,但是为什么你可以用它作为参数。
最佳答案
null!=doc
被评估为 bool 值,并将结果传递给 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
}
});
关于javascript逻辑运算符作为函数中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500442/