В каком-то коде я видел двойное отрицание !!
перед переменной, например:
{ token: !!localStorage.getItem('token') }
Я понимаю, что отрицание используется !
для логического отрицания выражения.
Но двойное отрицание возвращает его в исходное состояние, например:
var token = true;
console.log( token ); // true
console.log( !token ); // false
console.log( !!token ); // true
Для чего и почему этот прием используется в JavaScript?
Наверняка теперь вы еще больше запутаетесь, но давайте посмотрим на несколько примеров:
Возможно, теперь первый абзац лучше понятен с примерами:
Двойное отрицание в основном используется
!!
для принудительного преобразования типа, аналогично, если мы хотим сравнить тип значения с оператором равенства==
, нам пришлось бы использовать оператор строгого равенства===
.Пример, который также можно увидеть в реальных кодах:
В примере мы сравниваем значение с
true
(логическим), если бы мы не использовали двойное отрицание!!
, оно всегда возвращало бы ложь.Другое использование также может заключаться в запутывании кода, например:
Они также говорят, что это быстрее, если мы используем двойное отрицание, но судите сами, я создал его
Benchmark
в jsPerf - см. SpeedTest ...Источники и где можно посмотреть больше примеров и пояснений: