Javascript 如何在添加字符串时添加If语句

Javascript 如何在添加字符串时添加If语句,javascript,Javascript,你好 在追加字符串时,我对如何在循环中添加If语句感到困惑 这是我的密码 html += '<tr><td></td>'+ '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+ '<td>'+x.transactionType+'</td>'+ '<td>'+x.id+'&

你好

在追加字符串时,我对如何在循环中添加If语句感到困惑

这是我的密码

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>'+
            '<td>'+if(x.description!=null){x.description}+'</td>'+
            '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';
    });
html+=''+
''+时刻(x.date\u at).format('MM/DD/YYYY')+''+
''+x.transactionType+''+
''+x.id+''+
''如果(x.description!=null){x.description}+''+
''+x.ref_no+''号+
''+x.借记卡+''+
''+x.信用证+''+
''+val+'';
});

然后我在IF部分得到一个语法错误。谢谢你的帮助。我已经有一段时间没有编写代码了,这就是为什么我有点困惑。

你不能只在代码中的任何地方放置
if
语句。如果需要在该位置获得此功能,则需要使用三元If运算符
?:

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>'+
            '<td>'+ (x.description!=null ? x.description : '')+'</td>'+
            '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';

不能只在代码中的任何地方放置
if
语句。如果需要在该位置获得此功能,则需要使用三元If运算符
?:

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>'+
            '<td>'+ (x.description!=null ? x.description : '')+'</td>'+
            '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';
您可以使用以下类似的方法:

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>';

if(x.description!=null) html+=  '<td>' + {x.description} + '</td>';

html +=     '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';
    });
html+=''+(x.description!=null?x.description:'')+''

在代码中:

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>'+
            '<td>'+(x.description!=null ? x.description : '' )+'</td>'+
            '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';
html+=''+
''+时刻(x.date\u at).format('MM/DD/YYYY')+''+
''+x.transactionType+''+
''+x.id+''+
''+(x.description!=null?x.description:'')+''+
''+x.ref_no+''号+
''+x.借记卡+''+
''+x.信用证+''+
''+val+'';
您可以这样使用:

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>';

if(x.description!=null) html+=  '<td>' + {x.description} + '</td>';

html +=     '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';
    });
html+=''+(x.description!=null?x.description:'')+''

在代码中:

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>'+
            '<td>'+(x.description!=null ? x.description : '' )+'</td>'+
            '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';
html+=''+
''+时刻(x.date\u at).format('MM/DD/YYYY')+''+
''+x.transactionType+''+
''+x.id+''+
''+(x.description!=null?x.description:'')+''+
''+x.ref_no+''号+
''+x.借记卡+''+
''+x.信用证+''+
''+val+'';

我认为您只需要像这样中断连接:

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>';

if(x.description!=null) html+=  '<td>' + {x.description} + '</td>';

html +=     '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';
    });
html+=''+
''+时刻(x.date\u at).format('MM/DD/YYYY')+''+
''+x.transactionType+''+
''+x.id+'';
如果(x.description!=null)html+=''+{x.description}+'';
html+=''+x.ref_no+''+
''+x.借记卡+''+
''+x.信用证+''+
''+val+'';
});

我认为您只需要像这样中断连接:

html += '<tr><td></td>'+
            '<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
            '<td>'+x.transactionType+'</td>'+
            '<td>'+x.id+'</td>';

if(x.description!=null) html+=  '<td>' + {x.description} + '</td>';

html +=     '<td>'+x.ref_no+'</td>'+
            '<td class="align-right">'+x.debit+'</td>'+
            '<td class="align-right">'+x.credit+'</td>'+
            '<td class="align-right">'+val+'</td></tr>';
    });
html+=''+
''+时刻(x.date\u at).format('MM/DD/YYYY')+''+
''+x.transactionType+''+
''+x.id+'';
如果(x.description!=null)html+=''+{x.description}+'';
html+=''+x.ref_no+''+
''+x.借记卡+''+
''+x.信用证+''+
''+val+'';
});

如果那样,你就不能使用。基本问题是,在JavaScript中,if是一个语句,而不是一个表达式,并且它不返回任何值(不像Scala这样更严格的函数式语言,在Scala中,所有内容都是一个表达式并生成一个值)

因此,您有以下选项:

  • 使用三元条件运算符?:它产生一个值,实际上可以在表达式中使用:

    …+x、 描述?x、 说明:''+

  • 唯一的不便之处是,您总是需要一个else值,因此在只检查description是否为null的情况下,您需要提供一个空字符串作为替代。当您需要打印大量字段时,这可能会很麻烦

  • 在格式化范围内使用帮助函数。如果您只有一个大对象要格式化,这是一个优雅的解决方案:
  • const源={
    第一:"第一",,
    第二:空,
    第三:"第三",,
    }
    功能fmt(键){
    返回源[键]?源[键]:“”
    }
    让html='
    ' +fmt('first')+'
    ' +fmt('second')+'
    ' +fmt('third')+'
    ' + ''
    document.write(html)
    如果那样的话,就不能使用。基本问题是,在JavaScript中,if是一个语句,而不是一个表达式,并且它不返回任何值(不像Scala这样更严格的函数式语言,在Scala中,所有内容都是一个表达式并生成一个值)

    因此,您有以下选项:

  • 使用三元条件运算符?:它产生一个值,实际上可以在表达式中使用:

    …+x、 描述?x、 说明:''+

  • 唯一的不便之处是,您总是需要一个else值,因此在只检查description是否为null的情况下,您需要提供一个空字符串作为替代。当您需要打印大量字段时,这可能会很麻烦

  • 在格式化范围内使用帮助函数。如果您只有一个大对象要格式化,这是一个优雅的解决方案:
  • const源={
    第一:"第一",,
    第二:空,
    第三:"第三",,
    }
    功能fmt(键){
    返回源[键]?源[键]:“”
    }
    让html='
    ' +fmt('first')+'
    ' +fmt('second')+'
    ' +fmt('third')+'
    ' + ''
    document.write(html)
    非常感谢您在@Vsevolod快速给出答案!我真的很困惑为什么我会犯这个错误,因为我认为它的语法是正确的。。无论如何,非常感谢您为我清除了这个问题。非常感谢您的快速回答@vsevold!我真的很困惑为什么我会犯这个错误,因为我认为它的语法是正确的。。不管怎样,非常感谢你帮我把这件事弄清楚。