Javascript代码:
var empty = '';
console.warn(typeof(empty && null)); // 'string'

为什么声明"空&&空"返回空字符串?预期结果:错误。
答案 0 :(得分:1)
关于&&
(逻辑和运算符),docs中明确说明了这一点:
如果可以转换为false,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时,&&如果两个操作数都为真,则返回true;否则,返回false。
的确,它会在你的情况下返回第一个表达式 - 空字符串,按设计。在 if 的上下文中,语句被解释为boolean
,然后您会得到一个您想要的True / False结果,或者您是否直接进行了演员。
答案 1 :(得分:0)
基本上,您的代码评估为:
如果空是" truthy"在typeof
上运行null
,否则在empty
变量上运行它。
因此empty
是假的,因为它是一个空字符串,这就是它运行typeof
而不是null
的原因。 string
是typeof
字符串""
。