var str1 = "string1" + (false)?"string2":"string3"; // output: string2
var str2 = "string1" + (true)?"string2":"string3"; // output: string2
为什么这些表达式在条件中无论真/假都评估为“string2”?
“string1”和“string3”会发生什么?这些表达式究竟是如何评估的?
答案 0 :(得分:8)
因为?
的优先级低于+
"string1" + (false)?"string2":"string3"
相当于说:
("string1" + false) ? "string2" : "string3"
"string1" + false
计算字符串值"string1false"
,这是真实的(感谢@Vache)
要让它以您想要的方式工作,请在三元表达式周围添加大括号。
"string1" + (false ? "string2" : "string3")