为何可选链操作符在Electron v26.1 preload教程示例中失效?
问题原因及解决方案
核心问题:你误用了可选链操作符的语法,
information?.innerText = ...这种写法在JavaScript中是无效的,因为可选链表达式不能作为赋值操作的左侧目标。为什么会失效?
可选链?.的设计目的是安全访问可能为null/undefined的属性或方法,但ECMAScript标准明确规定:可选链表达式属于不可赋值表达式,它的结果是一个临时值,无法被赋予新值。当你写information?.innerText = xxx时,JavaScript引擎会直接忽略这个赋值操作,自然不会更新页面上的版本信息。补充说明:Node.js 18支持可选链没错,但这是语法规则限制,和运行环境无关——哪怕在最新浏览器或Node版本里,这种赋值写法都是不合法的。
正确的写法(确保元素存在再赋值):
如果你想避免information为null时的报错,应该先判断元素是否存在,再执行赋值:// 方式1:条件判断 if (information) { information.innerText = `Electron v${versions.electron}`; } // 方式2:逻辑与短路 information && (information.innerText = `Electron v${versions.electron}`);
内容的提问来源于stack exchange,提问作者YaCHEN Wang
相关产品推荐
相关产品推荐

