我对这种情况有点困惑:
console.log('' && false) //''
我原以为它会返回false,但会返回''
但是空格很大,它会返回false
console.log(' ' && false) //true
有人可以解释一下这个原因吗?
答案 0 :(得分:0)
我的答案在这里找到:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
如果可以转换为false,则返回expr1;否则,返回 表达式2。因此,当与布尔值一起使用时,&&如果两者都返回true 操作数是真的;否则,返回false。
所以console.log('' && false) //''
因为''
可以转换为false(!!''
将返回false
),它将返回''
答案 1 :(得分:0)
您从第一个日志中收到的内容''与条件字符串不同。检查一下:
accommodation
你会看到它记录'else字符串'。由于你的条件长度为零,它会追溯到不存在的else。所以它只是显示一个情绪化的字符串。
零长度字符串通常是假的,这就是你从第二个字符串中得到错误结果的原因。
答案 2 :(得分:0)
"&安培;&安培;"运算符仅在第一个操作数被计算为某个真值或者为真时自动计算第一个操作数并进入下一个操作数。此评估将继续,直到评估完整表达式。
例如,a == b&& b> = 7&& Ç== 6。在这里,只有当a == b为真时,才检查b> = 7,如果计算结果为真,则检查c == 6.
在您的问题中,''是一个空字符串,是一个虚假的值。因此,它没有进行最后一个操作数并返回''。有关javascript中truthy和falsy值的更多信息,请访问以下链接:https://www.sitepoint.com/javascript-truthy-falsy/