|| 将空字符串转换为bool,&& not

Pao*_*olo 2 javascript firebug

这是正常的吗?它是一个功能还是一个bug?(我正在使用萤火虫):

>>> '' || true
true
>>> '' || false
false
>>> '' && false
""
>>> '' && true
""
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 8

没有将空字符串转换为Boolean.

||

它正在评估左侧,其中一个空字符串是假的.然后它检查右侧(因为它是一个,并且那一侧可能是真的),并返回该值.

&&

因为&&需要双方都是真的而左手边是假的,所以不用费心去检查右手边(短路评估).因此,它只返回左侧,即空字符串.

JavaScript始终返回它评估的最后一个值.

>>> '' || 0 || undefined || null || false || NaN || 'hello'
"hello"
Run Code Online (Sandbox Code Playgroud)