我从以下三元组中删除了括号:
res.setHeader('Content-Type', 'application/' + (isMap ? 'json' : 'javascript'));
测试失败了:
Error: expected 'json' to equal 'application/javascript'
起初我认为这只是一些有线的Node.js问题,但似乎是:
'foo' + false ? 'bar' : 'baz'
评估为' bar'在Firefox和Chrome中。
所以我的问题是:
true
时,为什么我会获得三元操作的false
值。答案 0 :(得分:0)
首先将false
转换为字符串,然后连接到foo
字符串,因为这会成功,它会返回true
,最终会得到bar
< / p>
答案 1 :(得分:0)
因为你没有通过FALSE。您正在向字符串添加FALSE对象。在这种情况下,JavaScript会将其视为空变量。它不是一个布尔值,就像你在想的那样。
此处没有实际评估解决为false,因此它将返回true。
答案 2 :(得分:0)
'foo' + false ? 'bar' : 'baz'
连接'foo'+ false正在评估为true,因为false被视为字符串,因此字符串'foofalse'为真。
它的副本和接受的答案有一个很好的解释。