「JS」字符串拼接结合三目表达式问题

问题描述

有这么一段代码

    let name = 'XP.C'
    let output = 'Hello ' + name ? name + ', how are you?' : ''
    console.log(output)

我们期望的是打印:Hello XP.C, how are you?
然而打印出来的却是:XP.C, how are you?
Hello不见了!!

原因

在JS中,字符串连接符号+的优先级高于三目表达式

let output = 'Hello ' + name ? name + ', how are you?' : ''

这里将?前面的 'Hello ' + name作为一个整体识别为三目表达式的判断条件了

解决方法

将三目表达式用括号括起来,提高优先级

    let output = 'Hello ' + (name ? name + ', how are you?' : '')

你可能感兴趣的:(「JS」字符串拼接结合三目表达式问题)