~~ Оператор Javascript

Я столкнулся с этим оператором, предшествующим ключевому слову this в некотором коде Node.js Harmony, специально работающем с веб-платформой Koa.

Пример кода ниже:

app.use(function *(){
   var n = ~~this.cookies.get('view') + 1;
   this.cookies.set('view', n);
   this.body = n + ' views';
});

Обычный поиск в гугле ничего не дал, так что я в полном замешательстве. Единственное, что я могу сказать наверняка, это то, что это необходимо для функциональности этого фрагмента, так как код перестает работать, когда его удаляют.

Любое понимание будет оценено с определением цели этого инопланетного оператора.


person Alexander Christie    schedule 18.01.2015    source источник
comment
Разве ~~ не является двойным побитовым НЕ?   -  person abligh    schedule 19.01.2015
comment
@ablight да, это так. developer.mozilla.org/ en-US/docs/Web/JavaScript/Reference/   -  person Fabrício Matté    schedule 19.01.2015
comment
Я не знал, что Javascript может выполнять побитовую логику. Это вполне может быть так, я напишу несколько тестов для проверки!   -  person Alexander Christie    schedule 19.01.2015


Ответы (1)


Это двойное побитовое НЕ. Его единственный практический эффект (насколько я вижу) состоит в том, чтобы привести его аргумент (в данном случае все this.cookies.get('view')) к целому числу.

person Malvolio    schedule 18.01.2015
comment
А, вот что такое целое число, целая часть (и знак) числа. - person Malvolio; 19.01.2015
comment
this.cookies.get() возвращает строку, поэтому двойной бит кажется необходимым, чтобы вы могли увеличить значение. - person Alexander Christie; 19.01.2015