javascript逻辑运算符作为函数中的参数

javascript逻辑运算符作为函数中的参数,javascript,Javascript,我正在读一本关于使用节点、主干和mongodb构建web应用程序的书。我从书中得到了一些示例,遇到了一个代码片段,这让我很困惑 var login = function(email, password, callback) { var shaSum = crypto.createHash('sha256'); shaSum.update(password); Account.findOne({email:email,password:shaSum.digest('he

我正在读一本关于使用节点、主干和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中的mean null不等于doc,但为什么您可以将其用作参数。

似乎是这样的。调用该函数时,nul从doc继承一个真值,然后在回调函数的处理中使用该值。这里发生的事情是,当null被认为不等于doc时,回调函数将被处理,知道null不等于doc。如果我们对函数和正在发生的事情了解得更多,我可能会更详细,但到目前为止,我所能说的就是正在发生的事情。

null=doc
将作为布尔值进行计算,结果将传递给
回调
,仅此而已

这与拥有:

var docIsNull = null!=doc;
callback(docIsNull);
我不确定具体方法的结果,但它只是为回调提供了一个
true
false
,无论
doc
值是否为
null

我猜如果
doc
null
,那意味着找不到带有特定密码的特定电子邮件。因此,当您调用
登录时,您可能会使用:

login("some email", "some password", function (authenticated) {
    if (authenticated) {
        // email/password found and matched
    } else {
        // no match
    }
});

null=doc
将作为布尔值进行计算,并将结果传递给回调,仅此而已。这与使用
var docIsNull=null是一样的=博士;回调(docIsNull)^^^^^^他说,对表达式求值会返回一个布尔值,不管求值是在单独的变量中进行还是直接进行,它都会将结果的布尔值传递给回调函数。@Ian:您的注释应该被接受为答案。:)这是完全错误的
null
是JavaScript中的关键字和原语值。@user1743843没问题!这有意义和帮助吗?