2013-10-02 5 views
0

Я читаю "Discover Метеор" в данный момент, В главе 7, имеет код:Что означает этот синтаксис -----> "!!" в javascript?

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

Благодаря

+0

дубликата http://stackoverflow.com/questions/784929/what-is-the-not-not-operator-in-javascript – mavrosxristoforos

ответ

3

Красиво суммируется Том Риттер, как

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

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

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

поэтому делать отливки в булево, а затем делать двойное отрицание

+0

О, это правда. Это напоминает мне Perl. лол – CodeFarmer

1

! превратит любое положительное значение, истинную или существующую переменную (например, строки и массивы) в значение false, а любое отрицательное, неопределенное, null или false в true. !! применяет его дважды.

В этом контексте он будет возвращать true, если переменная userId существует и не является пустой, нулевой или ложной.

0

Он просто любит изменить тип переменной для булева

!! userId; 

// same as 

userId ? true:false; 
Смежные вопросы