“string1”+(<condition>)?“string2”:“string3”</condition>

时间:2014-07-18 14:38:17

标签: javascript string conditional-statements

var str1 = "string1" + (false)?"string2":"string3";   // output: string2
var str2 = "string1" + (true)?"string2":"string3";    // output: string2

为什么这些表达式在条件中无论真/假都评估为“string2”?

“string1”和“string3”会发生什么?这些表达式究竟是如何评估的?

1 个答案:

答案 0 :(得分:8)

因为?的优先级低于+

"string1" + (false)?"string2":"string3"

相当于说:

("string1" + false) ? "string2" : "string3"

"string1" + false计算字符串值"string1false",这是真实的(感谢@Vache)


要让它以您想要的方式工作,请在三元表达式周围添加大括号。

"string1" + (false  ? "string2" : "string3")