在JavaScript中,是一个空string总是false作为一个布尔值?
在JavaScript中,
var a = ''; var b = (a) ? false : true; // fixed!
var b
将被设置为true
。
这是一个可以依赖的定义的行为吗?
是。 Javascript是ECMAScript的一种方言,ECMAScript语言规范明确地定义了这种行为:
ToBoolean
如果参数是空string(长度为零),则结果为false。 否则结果是真的
是。 所有false
, 0
,空string''
和""
, NaN
, undefined
和null
总是被评估为false
; 一切都是true
。
在你的例子中,评估后b是false
。 (我认为你错误地写了true
)
var b
将被设置为false
。 这是因为一个空string在JavaScript中被视为一个“假”值,就像其他一些值一样。
可以转换为false的expression式的例子是评估为null,0,空string(“”)或未定义的expression式。 (请参阅MDN参考 )
var a = ''; var b = (a) ? false : true; // fixed! console.log(b); // => true