2017-02-15 92 views
2

我有点糊涂了这个条件:解释为什么这种情况下“” &&假将返回'

console.log('' && false) //'' 

我期待它返回假,但它返回''

但空的空间,它的返回虚假

console.log(' ' && false) //true 

有人可以请解释这个原因吗?

+5

零长度字符串为false,非零长度字符串为truthy。 – 2017-02-15 00:43:48

+0

@squint谢谢队友,但它为什么返回'''而不是布尔线 – Bruce

+1

因为&&'[返回](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/ Logical_Operators)第一个值,如果它是false-y,否则是第二个值。 –

回答

0

什么您收到了第一个日志的“”是不一样的条件字符串。选中此项:

console.log('' && false || 'else string') 

然后你会看到它记录'else string'。由于你的条件长度为零,它会在不存在的else之后。所以它只是显示一个emoty字符串。

零长度字符串通常是虚假的,这就是为什么你从第二个字符串中得到错误结果的原因。

0

“& &”操作符评估第一个操作数,并且只有在第一个操作数被评估为某个真值或真实本身时才会进入下一个操作数。此评估会继续进行,直至评估完整表达式。

例如,== b & & B> = 7 & &Ç== 6。在这种情况下,只有当a == b为真时,它才会检查b> = 7,如果它的计算结果为真,那么它会检查c == 6。

在你的问题中,''是一个空字符串,是一个虚假值。因此,它没有进入最后的操作数并返回''。有关javascript中的真值和伪数值的更多信息,请通过以下链接:https://www.sitepoint.com/javascript-truthy-falsy/

相关问题