【问题标题】:Using a ternary operator to output a string使用三元运算符输出字符串
【发布时间】:2014-02-19 21:02:29
【问题描述】:

为什么会这样

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

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

感谢您的帮助。

【问题讨论】:

标签: javascript string conditional ternary-operator


【解决方案1】:

因为它不知道+ 不是它的一部分。在三元部分周围使用 (),以便操作顺序符合您的要求。

$('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>');

查看我在上面第二行开头和结尾添加的额外()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 2016-06-18
    • 2012-05-24
    • 1970-01-01
    • 2016-09-09
    • 2014-04-10
    • 2012-12-19
    • 1970-01-01
    相关资源
    最近更新 更多