"string1"+(<condition>)?"string2":"string3"

Shi*_*hir -1 javascript string conditional-statements

var str1 = "string1" + (false)?"string2":"string3";   // output: string2
var str2 = "string1" + (true)?"string2":"string3";    // output: string2
Run Code Online (Sandbox Code Playgroud)

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

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

tec*_*bar 8

因为?优先级低于+

"string1" + (false)?"string2":"string3"
Run Code Online (Sandbox Code Playgroud)

相当于说:

("string1" + false) ? "string2" : "string3"
Run Code Online (Sandbox Code Playgroud)

"string1" + false求值为"string1false"truthy 的字符串值(Thanks @Vache)


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

"string1" + (false  ? "string2" : "string3")
Run Code Online (Sandbox Code Playgroud)

  • 我要补充说``string1"+ false`产生字符串`"string1false"`这是一个真值. (4认同)