使用三元运算符输出字符串

时间:2014-01-28 14:04:59

标签: javascript string conditional ternary-operator

为什么会这样

var marketName = (controller.state.operation.code === 'copy')
    ? controller.state.market.targetName
    : controller.state.market.name;

$('dd.preview-step1').html(
    'Market = <i>' 
    + marketName 
    + '</i><br />Source = <i>'
    + controller.state.source.name 
    + '</i><br />Target = <i>'
    + controller.state.target.name
    +'</i>'
);

输出:

  

市场= blabla
  来源= blabla
  目标= blabla

虽然这个

$('dd.preview-step1').html(
    'Market = <i>'
    + (controller.state.operation.code === 'copy') 
        ? controller.state.market.targetName
        : controller.state.market.name
    + '</i><br />Source = <i>'
    + controller.state.source.name
    + '</i><br />Target = <i>'
    + controller.state.target.name 
    + '</i>'
);

只输出:

  

市场= blabla

我不明白为什么不打印内联三元运算符后的其余字符串。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

因为它不知道+不属于它。在三元部分周围使用(),以便操作顺序达到你想要的效果。

$('dd.preview-step1').html('Market = <i>'+ 
    ((controller.state.operation.code === 'copy') ? controller.state.market.targetName : controller.state.market.name)
     +'</i><br />Source = <i>'+ controller.state.source.name +'</i><br />Target = <i>'+ controller.state.target.name +'</i>');

请参阅我在上面第二行的开头和结尾添加的额外()