In javascript, is an empty string always false as a boolean?

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)

 

 

posted @ 2020-12-29 10:11  ChuckLu  阅读(85)  评论(0编辑  收藏  举报