В javascript пустая строка всегда false как логическая?
в JavaScript,
var a = '';
var b = (a) ? false : true; // fixed!
var b
будет установлен в false
.
это определенное поведение, на которое можно положиться?
Ответы
Ответ 1
Да. Javascript - это диалект ECMAScript, а спецификация языка ECMAScript четко определяет это поведение:
ToBoolean
Результат является ложным, если аргумент является пустой строкой (ее длина равна нулю); в противном случае результат будет истинным
Цитата взята из http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
Ответ 2
Да. Все false
, 0
, пустые строки ''
и ""
, NaN
, undefined
и null
всегда оцениваются как false
; все остальное true
.
И в вашем примере b после false
false
. (Я думаю, вы ошибочно написали true
)
Ответ 3
var b
будет установлен в true
. Это связано с тем, что в JavaScript пустая строка считается значением 'falsey', как и некоторые другие значения.
Пожалуйста, посмотрите на http://www.sitepoint.com/javascript-truthy-falsy/ для ложных значений
Ответ 4
var a = '';
var b = (a) ? false : true; // fixed!
console.log(b); // => true
Ответ 5
Примерами выражений, которые могут быть преобразованы в ложные, являются выражения, которые оцениваются как ноль, 0, пустая строка ("") или неопределенные. (см. справку MDN)