Как двойное восклицание (!!) работает в javascript?

Я просматриваю демонстрацию Discover Meteor и изо всех сил пытаюсь понять, как именно "вернуться! Идентификатор пользователя;' работает в в этом разделе:

Posts.allow({
  insert: function(userId, doc) {
  // only allow posting if you are logged in
    return !! userId;
  }
});

Ответы

Ответ 1

! - логическое отрицание или оператор "не". !! - ! дважды. Это способ присвоить значение "правдивое" или "ложное" значение true или false, соответственно. Учитывая логическое значение, ! будет отрицать значение, т.е. !true дает false и наоборот. При задании чего-то другого, кроме логического, значение сначала будет преобразовано в логическое, а затем отменено. Например, !undefined сначала преобразует undefined в false, а затем сбрасывает его, получая true. Применение второго оператора ! (!!undefined) дает false, поэтому в действии !!undefined преобразуется undefined в false.

В JavaScript значения false, null, undefined, 0, -0, NaN и '' (пустая строка) являются значениями "ложных". Все остальные значения являются "правдивыми". (1): 7.1.2 Здесь таблица истинности ! и !! применяется к различным значениям:

 value     | !value | !!value
-----------+--------+-------
 false     | true   | false
 true      | false  | true
 null      | true   | false
 undefined | true   | false
 0         | true   | false
 -0        | true   | false
 1         | false  | true
 -5        | false  | true
 NaN       | true   | false
 ''        | true   | false
 'hello'   | false  | true