我最近遇到过这个问题,并认为这会产生一个很好的问题.
假设您要将一个字符串分配给一个局部变量,并希望通过一个简单的条件来改变它.所以你在字符串中插入一个内联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)
最好的解释为什么这是赢得令人垂涎的答案旗帜!
这当然与优先权有关.
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)