「JS」字符串拼接结合三目表达式问题
2018-08-15 本文已影响1人
Android埋坑的艺术
问题描述
有这么一段代码
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?' : '')