В 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)