Javascript 字符串模板中的不同布尔处理?

Javascript 字符串模板中的不同布尔处理?,javascript,Javascript,常数a=‘嗨’; 常数b='newTextHI' const str=`${a.toUpperCase}${true&&`\n${b.toUpperCase}`; console.logstr; 常数c='hi'; 常数d='newTextHI' const str2=`c.toUpperCase}${false&`\n${d.toUpperCase}`; console.logstr2 在中,表达式1和表达式2 如果expression1为,它将返回expression2,否则它将返回expr

常数a=‘嗨’; 常数b='newTextHI' const str=`${a.toUpperCase}${true&&`\n${b.toUpperCase}`; console.logstr; 常数c='hi'; 常数d='newTextHI' const str2=`c.toUpperCase}${false&`\n${d.toUpperCase}`; console.logstr2 在中,表达式1和表达式2

如果expression1为,它将返回expression2,否则它将返回expression1

如果被链接,同样的逻辑会被重复应用。它将进行检查,直到找到值为止。如果未找到,则返回最后一个表达式

//这里没有虚假的表达 //返回的最后一个表达式:`string` console.logtrue&&`string` //在false处短路,因为继续下去有什么意义? console.logfalse&`string` //是的,100,弦都是真实的 //0是错误的值。因此,它计算到0并返回它
console.logtrue&&100&&&string`&&0&&;不重要。请使用三元运算符,如:decider?:@DanielLizik:是的,我知道三元可以得到我想要的,但是我不明白为什么布尔在上面的例子中被区别对待example@Isaac因为js中的模板文字强制为字符串,所以出现falsefalse@DanielLizik:噢!我忘了第一部分也是假的!我真傻!谢谢