In javascript, is an empty string always false as a boolean?
in javascript,
var a = '';
var b = (a) ? true : false;
var b
will be set to false
.
is this a defined behavior that can be relied upon?
回答
Yes. Javascript is a dialect of ECMAScript, and ECMAScript language specification clearly defines this behavior:
ToBoolean
The result is false if the argument is the empty String (its length is zero); otherwise the result is true
Quote taken from http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
One caveat警告 is that new String("")
is truthy! This is because it is an object, whereas the short form ""
represents the primitive value version. The same goes for new Number(0)
and even new Boolean(false)
. It's a good reason not to use the object versions in your code, and it does mean that if (str.length)
handles this edge case whereas if (str)
would not.
回答2
Yes. All false
, 0
, empty strings ''
and ""
, NaN
, undefined
, and null
are always evaluated as false
; everything else is true
.
And in your example, b is false
after evaluation. (I think you mistakenly wrote true
)