编写含可选链的JavaScript代码报错,复制无可选链代码后错误消失
问题分析与解决
你的报错信息翻译为:「赋值表达式的左侧不能使用可选属性访问」,问题根源出在你自行编写代码里的?.可选链操作符上。
如果你是在执行赋值操作(比如document.getElementById("num1-el")?.textContent = "123"),这种写法是JavaScript明确禁止的——可选链的作用是当左侧值为null或undefined时短路返回,不再继续访问后续属性。但把可选链放在赋值语句的左侧,一旦目标元素不存在,赋值操作就没有有效目标,JS直接拦截这种无意义的语法。
而你复制的代码去掉了?.,直接使用document.getElementById("num2-el").textContent:如果目标元素存在,就能正常完成赋值;如果元素不存在,会抛出「Cannot set property 'textContent' of null」的运行时错误,但不会触发你当前遇到的语法错误。
解决办法:
- 若能确定目标元素一定存在,直接去掉
?.,按复制的代码写法即可 - 若不确定元素是否存在,先做存在性判断再赋值:
const targetEl = document.getElementById("num1-el"); if (targetEl) { targetEl.textContent = "你要设置的内容"; }
内容的提问来源于stack exchange,提问作者we die tomorrow
相关产品推荐
相关产品推荐

