使用console?.log(69)替代console.log(69)无报错,问号操作符作用是什么?
可选链操作符
?.作用说明 你提到的?和后续的.是JavaScript中一个完整的语法特性,叫做可选链操作符,是ES2020版本正式加入的标准语法,具体作用如下:
- 访问对象属性或者调用方法前,会先校验操作符左侧的取值是否为
null或者undefined,如果是则直接短路返回undefined,不会继续执行后续的属性/方法访问逻辑,也不会抛出类型错误。 - 对应你给出的示例:如果运行代码的环境中不存在
console对象,直接执行console.log(69)会抛出报错,中断后续代码运行;而使用console?.log(69)时,会先判断console的取值,发现不存在就直接终止操作,不会触发报错,仅返回undefined。当console存在时,两者的执行效果完全一致,都会正常调用log方法输出69。 - 可选链除了用于对象属性访问,还支持函数调用
func?.()、数组下标访问arr?.[index]等场景,逻辑完全相同。
内容的提问来源于stack exchange,提问作者gautamajay52
相关产品推荐
相关产品推荐

