一直在尝试在模板字符串中添加条件。我做不到。我有两个字符串 t1 和 t2,当 t2 未定义或为空时只显示 t1,当 t2 存在时将 t2 附加到括号内和 t1
let t1= "hey";
let t2 = "there";
//need the output something like hey(there) when there t2 is present. when it is null or undefined or empty just show hey
//Have tried the below but it is not working
console.log(`${t2} ${t1} ? ${t1}(${t2}): ${t1}`)
最佳答案
三元应在 ${}
表达式内部完成,如下所示:
let t1 = "hey";
let t2 = "there";
console.log(`${t1}${t2 ? `(${t2})` : ''}`);
以上代码解释如下:
- 由于您已经指定无论您是否定义了
t2
都应该指定前缀“hey
”,因此无需将其包含在三元表达式。 代码的下一部分是内联的三元运算符,用于检查
t2
是否为 truthy .- 如果为真,则执行三元运算符的第一部分。换句话说,三元运算符将返回
(${t2})
。由于这是另一个模板文字,因此将通过将t2
变量替换到模板表达式中来对其进行评估。 - 如果不为真,则执行三元运算符的第二部分,这是一个空字符串。
- 如果为真,则执行三元运算符的第一部分。换句话说,三元运算符将返回
请注意,您可以在模板文字中包含模板文字。查看Template Literals documentation在 MDN 上获取更多信息。
关于javascript - 字符串文字中的三元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59425120/