为了避免在访问可能为 null 或未定义的对象的属性时出现错误,您可以使用可选链接运算符 (?.):
~~~
const result = object?.property;
~~~
这段代码使用了JavaScript的可选链操作符(Optional Chaining Operator)。它的含义是,如果`object`对象存在`property`属性,则返回该属性值;否则返回`undefined`。该表达式可以帮助你避免`TypeError`异常,当你尝试访问一个不存在的属性时,它会返回`undefined`而不是抛出异常。
比如,考虑以下示例:
```javascript
const user = {
name: "John",
address: {
city: "New York",
street: "123 Main St"
}
};
const city = user.address ? user.address.city : undefined;
```
在上述代码中,我们需要访问`user`对象的`address`属性,并获取其内部的`city`属性。为了避免`TypeError`异常,我们使用了三元条件运算符来检查`user.address`是否存在。这种写法可能会导致代码变得冗长,特别是当对象嵌套层级很深时。
使用可选链操作符,你可以将上述代码简化成如下:
```javascript
const city = user?.address?.city;
```
这样就不需要进行繁琐的条件检查,而是直接访问`user`、`address`和`city`属性,如果任意一项不存在,则返回`undefined`。
需要注意的是,可选链操作符是ES2020中新增的语法特性,在一些旧版本或不支持该特性的环境下,代码可能会出现语法错误。因此,在实际开发中,你需要根据项目要求和目标环境来决定是否使用可选链操作符。
- Js方法速查表
- Js 代码片段
- Js中类型判断
- 判断类型函数
- 处理 null、NaN 和 undefined 的 JS 代码片段
- 检查是否为null
- 检查undefined
- 检查 NaN
- 如果为 null 或undefined则默认为某个值
- 如果为 NaN,则默认为一个值
- 检查值是否为 null、undefined或 NaN
- 可选链接(?.)
- 空合并运算符(??)
- 将 null 或 undefined 转换为布尔值
- 将 NaN 转换为布尔值
- 处理函数参数中的 null 或 undefined
- 从数组中删除 null 或undefined的值
- 检测:是否是一个函数
- 函数:是否属于异步函数
- 检测:是否为一个安全数组
- 检测:对象是否为一个安全对象
- 字符串相关方法
- 字符串填充:padStart 和 padEnd
- 字符串反转:reverse
- 第一个字母大写:toUpperCase
- 字符串数组分割:扩展运算符
- 使用多个分隔符分割字符串
- 检查字符串是否包含:includes
- 检查字符串的开头或结尾是否有特定序列:startsWith 和 endsWith 方法
- 字符串替换:正则或replaceAll
- 数字:截断数字
- 数字:四舍五入
- 数字:补零
- 数组相关方法
- 数组:找到最接近的数值
- 数组:生成数组
- 数组:打乱数组
- 数组:简单数据去重
- 数组:唯一值数据去重
- 数组:多数组取交集
- 数组:查找最大值索引
- 数组:查找最小值索引
- 数组:压缩多个数组
- 对象相关方法
- 对象:删除无效属性
- 对象:反转对象键值
- 对象:字符串转对象
- 比较两个对象
- Js中判断空对象
- 正则表达式
- 正则:手机号格式化
- 正则:去除多余空格
- 正则:每千位添加分隔符
- 正则:校验6到18位大小写字母数字下划线组成的密码
- 日期相关的方法
- 日期:判断日期是否为今天
- 日期:日期转换
- 日期:秒数转换
- 日期:获取某年某月的第一天
- 日期:获取某年某月的最后一天
- 日期:获取某年月份天数
- 本地存储相关方法
- 获取cookie
- BOM相关
- Web:重新加载当前页面
- Web:滚动到页面顶部
- Web:元素滚动
- Web:检查当前是否IE浏览器
- Web:从给定文本中剥离html
- 常用高频方法
- 防抖/节流
- 进制转换
- 复制文本
- 过滤特殊字符
- 随机颜色生成
- 将16进制的颜色转换成rgb
- 将 RGB 转换为十六进制
- 获取随机ip
- uuid:需要生成一个id
- 强制等待
- Ts 代码片段
- omit函数