В чем разница if("test")
и if(!!"test")
, только судимо ложно или верно;В чем разница, если («тест») и если (!! «тест»)
ответ
!! делает преобразование типа в логическое, где вы просто отбрасываете его в if, это AFAIK, бессмысленно.
Вопрос имеет double negation expressson, который преобразует тип в boolean.
например.
var x = "test";
x === true; // evaluates to false
var x = !!"test";
x === true; //evalutes to true
!! преобразует «истинное» значение в true, а значение «false» - false.
значения "Falsy" являются следующие:
false
0
(ноль)""
(пустая строка)null
undefined
NaN
Если какая-либо переменная x
имеет любую из них, то !!x
вернет false
. В противном случае !!x
вернет true
.
С практической стороны нет никакой разницы между выполнением if(x)
и выполнением if(!!x)
, по крайней мере, не в javascript: оба будут вводить/выходить из if в тех же случаях.
EDIT: Смотрите http://www.sitepoint.com/blogs/2009/07/01/javascript-truthy-falsy/ для получения дополнительной информации
Там нет функциональной разницы. Как отмечают другие,
!!"test"
преобразовывается в строку в булево.
Думай об этом, как это:
!(!("test"))
Во-первых, "test"
оценивается как строка. Затем оценивается !"test"
. Поскольку !
является оператором отрицания, он преобразует вашу строку в логическую. Во многих языках сценариев непустые строки оцениваются как истинные, поэтому !
изменяет его на false. Затем оценивается !(!"test")
, изменяя значение false на true.
Но !!
, как правило, не требуется в условии if, как я уже упоминал, что он уже выполняет преобразование для вас, прежде чем проверять логическое значение. То есть обе эти линии:
if ("test")
if (!!"test")
функционально эквивалентны.
спасибо за ответ, если (!! "var ») широко используется в Ext lib; Я думаю, что если ("var") равно if (!! "var"); – user410648
- 1. тест, если файл существует
- 2. Метод Mockito и если тест
- 3. Определение, если тест тест-кухня пройден или
- 4. тест если есть
- 5. Тест, если UITableViewCell удален
- 6. тест, если дисплей = нет
- 7. тест, если объект JKArray
- 8. Тест, если сеанс запущен
- 9. Тест, если активен весовой диапазон
- 10. переменных и тест, если не в состоянии
- 11. Тест, если два списка равны
- 12. Тест, если JavaScript был изменен
- 13. Тест, если объект реализует интерфейс
- 14. Тест, если NSObject наблюдает строку
- 15. тест, если значение соответствует конструктор
- 16. Каирский тест, если текст перекрывается
- 17. Если тест на панду DataFrame
- 18. Тест, если субарр данного массива
- 19. Тест, если несколько EditTexts пустые
- 20. Тест, если массив PFFile пуст
- 21. PHP-тест, если существует оператор?
- 22. Тест Java, если круги накладываются
- 23. C# тест, если переменная назначена
- 24. Если заявление не проходит тест
- 25. тест если ДИВ активен JQuery
- 26. Тест Powershell, если папка пуста
- 27. тест, если jms прослушиватель работает
- 28. Быстрый тест, если каталог пуст
- 29. Тест, если ValidationError был поднят
- 30. Тест, если соединение было вызвано
Я думаю, что я уже видел такой вопрос, но я не могу вспомнить тему –
тема вашего вопроса отличается от тела – 2010-08-04 10:42:45
@ tm1rbrt: я исправил его, первый редактор отредактировал его неправильно. – BoltClock