JavaScript语法:字符串分配语句中的内联Ifs

Fri*_*ure 3 javascript

我最近遇到过这个问题,并认为这会产生一个很好的问题.

假设您要将一个字符串分配给一个局部变量,并希望通过一个简单的条件来改变它.所以你在字符串中插入一个内联if语句:

var someCondition = true;
var url = "beginning-" + (someCondition)?('middle'):('other_middle') + "-end";
Run Code Online (Sandbox Code Playgroud)

但这不能按预期工作,url的值将是"中间",而不是开始 - 中端.该语句产生预期结果:

var url = "beginning-" + ((someCondition)?('middle'):('other_middle')) + "-end";
Run Code Online (Sandbox Code Playgroud)

最好的解释为什么这是赢得令人垂涎的答案旗帜!

Mar*_*ers 9

这当然与优先权有关.

var url = "beginning-" + (someCondition)?('middle'):('other_middle') + "-end";
Run Code Online (Sandbox Code Playgroud)

被解释为:

var url = ("beginning-" + (someCondition)) ? ('middle') : (('other_middle') + "-end";)
Run Code Online (Sandbox Code Playgroud)