问题描述
有这么一段代码
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?' : '')
网友评论