为什么addEventListener回调中if判断可运行但三元运算符不生效?
你第二段代码无法正常运行的核心原因是三元运算符语法不完整。
- 第一段使用的
if条件语句允许仅声明条件成立时的执行分支,无else分支也属于合法JavaScript语法,因此可以正常运行。 - 第二段使用的三元运算符本质是带返回值的表达式,而非语句,语法强制要求完整结构为
判断条件 ? 条件成立时执行的表达式 : 条件不成立时执行的表达式,你省略了:以及条件不成立时的对应分支,属于语法错误,JavaScript引擎无法正常解析这段代码,因此无法运行。
修复方案
如果你希望用单行写法实现同等逻辑,不要使用残缺的三元运算符,更推荐用逻辑与短路写法,语法合法且符合使用场景:
window.addEventListener( 'scroll', () => { const pageHeight = window.pageYOffset pageHeight > 10 && console.log(pageHeight) } )
如果一定要使用三元运算符,补全第二个分支即可(无执行需求时可填充undefined、null等无意义值,不过该场景下不推荐这么写):
pageHeight > 10 ? console.log(pageHeight) : undefined
内容的提问来源于stack exchange,提问作者Raging Vids
相关产品推荐
相关产品推荐

