在JavaScript中,是一个空string总是false作为一个布尔值?

在JavaScript中,

var a = ''; var b = (a) ? false : true; // fixed! 

var b将被设置为true

这是一个可以依赖的定义的行为吗?

是。 Javascript是ECMAScript的一种方言,ECMAScript语言规范明确地定义了这种行为:

ToBoolean

如果参数是空string(长度为零),则结果为false。 否则结果是真的

引自publications/files/ECMA-ST/Ecma-2622.html

是。 所有false0 ,空string''""NaNundefinednull总是被评估为false ; 一切都是true

在你的例子中,评估后b是false 。 (我认为你错误地写了true

var b将被设置为false 。 这是因为一个空string在JavaScript中被视为一个“假”值,就像其他一些值一样。

请查看http://www.sitepoint.com/javascript-truthy-falsy/中的虚假价值;

可以转换为false的expression式的例子是评估为null,0,空string(“”)或未定义的expression式。 (请参阅MDN参考 )

 var a = ''; var b = (a) ? false : true; // fixed! console.log(b); // => true