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

JS语法name = name?.trim()中?的作用及MDN文档说明

语法说明

你问的?属于JavaScript标准里的可选链操作符(写法为?.),是ES2020版本正式加入的语法特性。
针对你看不懂的name = name?.trim();这行,运行逻辑非常直接:

  • 先校验.左侧的name值:如果name是null或者undefined,会直接短路,不执行后面的.trim()方法调用,整个表达式返回undefined赋值给name,全程不会抛出类型错误
  • 如果name是有效值(比如正常拆分出来的字符串),就正常调用trim()去掉首尾的空白字符,把处理后的结果赋值给name

设计作用

这个语法就是用来简化空值容错的写法。如果不写可选链,直接写name.trim(),一旦遇到name为null/undefined的边界场景(比如传入的Cookie字符串格式不规范,存在多余分号、空字段,解构赋值拿到异常值),代码会直接抛出TypeError,导致整个Cookie解析逻辑中断。
如果不用可选链,要实现同样的容错效果,得写冗余的空值判断:

name = (name !== null && name !== undefined) ? name.trim() : undefined;

MDN文档位置

该语法的官方参考文档在MDN Web Docs的「JavaScript 参考」-「表达式和运算符」分类下,对应条目为可选链(Optional chaining (?.)),里面包含了该语法的所有使用场景、兼容规则和边界说明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:39:38