Является !! Лучшая практика для проверки истинного значения в операторе if

В angular.js есть некоторые фрагменты кода !! проверить, является ли значение истинным в условии if.

Это лучшая практика? Я полностью понимаю в возвращаемое значение или другое назначение! используется, чтобы убедиться, что тип является логическим. Но так ли это для проверки условий?

if (!!value) {
  element[name] = true;
  element.setAttribute(name, lowercasedName);
} else {
  element[name] = false;
  element.removeAttribute(lowercasedName);
}

Ответ 1

Нет !! абсолютно бесполезен в if и только сбивает с толку читателя.

Значения, которые переводятся в true в !!value также проходят тест if потому что они являются значениями, которые оцениваются как true в логическом контексте, они называются "правдивыми".

Так что просто используйте

if (value) {

Ответ 2

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

В операторе потока управления, таком как if (value) { ... } или while (value) { ... }, префикс value с !! не имеет никакого эффекта, потому что оператор потока управления уже, по определению, принуждает value быть либо true или false. То же самое относится к условию в тернарном выражении оператора value ? a : b.

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