这种语法意味着什么----->在JavaScript中“!!”?

时间:2013-10-02 05:20:07

标签: javascript

我正在阅读“发现流星”, 在第7章中有代码:

Posts.allow({
  insert: function(userId, doc) {
    // only allow posting if you are logged in
    return !! userId;                        ///// <<==== what does "!!" means?
  }
});

由于

3 个答案:

答案 0 :(得分:3)

Tom Ritter精心总结为

// Maximum Obscurity:
val.enabled = !!userId;

// Partial Obscurity:
val.enabled = (userId != 0) ? true : false;

// And finally, much easier to understand:
val.enabled = (userId != 0);

因此要进行布尔运算然后进行双重否定

答案 1 :(得分:1)

!将任何正值,true或现有变量(如字符串和数组)转换为false,将任何negative,undefined,null或false转换为true。 !适用两次。

在此上下文中,如果变量userId存在且不为空,null或false,则返回true。

答案 2 :(得分:0)

它只是喜欢将变量类型更改为boolean

!! userId;

// same as

userId ? true:false;