Является !! Лучшая практика для проверки истинного значения в операторе 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
является идиоматическим, но, конечно, должно выполняться только тогда, когда оно не будет избыточным с помощью прилагаемой языковой конструкции.