这个语法是什么意思----->“!!“在 JavaScript 中

What does this syntax means -----> " !! " in javascript?

本文关键字:JavaScript 语法 是什么 意思 -----      更新时间:2023-09-26

我现在正在读"发现流星",在第7章中是有代码:

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

谢谢

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);

因此对布尔值进行转换,然后进行双重否定

! 会将任何正值、true 或

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

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

它只是喜欢您将变量类型更改为布尔值

!! userId;
// same as
userId ? true:false;