Пустая строка должна быть 'ложной' - PullRequest
0 голосов
/ 05 июня 2018

Javascript код:

var empty = '';
console.warn(typeof(empty && null)); // 'string'

Почему оператор "empty && null" возвращает пустую строку?Ожидаемый результат: ложь.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

По сути, ваш код оценивается следующим образом:

Если пусто "правдиво", запустите typeof на null, иначе запустите его на переменной empty.Так что empty ложно, потому что это пустая строка, поэтому она запускает typeof на ней, а не на null.string это typeof строка "".

0 голосов
/ 05 июня 2018

Это четко указано в документах относительно && (логическое и операторное):

Возвращает expr1, если его можно преобразовать в false;в противном случае возвращает expr2.Таким образом, при использовании с логическими значениями && возвращает true, если оба операнда имеют значение true;в противном случае возвращает false.

Таким образом, действительно, в вашем случае будет возвращено первое выражение в вашем случае - пустая строка.В контексте , если , где утверждение интерпретируется как boolean, тогда вы получите результат True / False, как вы ожидаете, или если вы выполните приведение напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...