You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Nullish coalescing operator抛错,求基于??/?.的原生实现方案

问题解答

首先,你遇到的语法错误是因为??(空值合并运算符)的右侧必须是表达式,而throw是语句,不属于表达式范畴,所以直接写throw会触发语法错误。

用??实现需求的可行方案

你可以把throw逻辑包装成一个立即执行函数(IIFE),将其转为表达式,这样就能和??配合使用:

const video = document.querySelector('#video') ?? (() => { throw new Error("Unable to find #video") })();

如果document.querySelector('#video')返回null或undefined,就会执行右侧的函数并抛出错误;如果找到元素,就直接赋值给video。

?.运算符的局限性

?.(可选链运算符)的作用是安全访问深层对象属性,避免因中间值为null/undefined而抛出错误,它本身无法触发错误,因此没法直接用来实现“找不到元素就抛错”的需求。

内容的提问来源于stack exchange,提问作者Benjamin H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:15:48