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

时间:2013-05-11 18:32:11

标签: javascript

我正在阅读一本关于使用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,但是为什么你可以将它作为参数使用呢。

2 个答案:

答案 0 :(得分:4)

null!=doc被评估为布尔值,结果传递给callback,这就是全部。

与以下相同:

var docIsNull = null!=doc;
callback(docIsNull);

我不确定具体方法的结果,但只是提供回调truefalsedoc值是null还是doc

我猜如果nulllogin,则表示找不到具有该特定密码的特定电子邮件。所以当你打电话给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。如果我们更多地了解这个功能以及发生了什么,我可能会更精细,但到目前为止我所能说的就是正在发生的事情。