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

问题描述 投票:0回答:3

我现在正在读《发现流星》, 第7章有代码:

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

谢谢

javascript operators
3个回答
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
投票

!会将任何正值、true 或现有变量(例如字符串和数组)转换为 false,并将任何负值、未定义、null 或 false 转换为 true。 !!涂抹两次。

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


0
投票

就像你将变量类型更改为布尔值

!! userId;

// same as

userId ? true:false;
© www.soinside.com 2019 - 2024. All rights reserved.