ES6中引入的链判断运算符[?.]与null安全运算符??是如何诞生的?

2026-05-17 04:510阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计799个文字,预计阅读时间需要4分钟。

ES6中引入的链判断运算符[?.]与null安全运算符??是如何诞生的?

指针运算符 ** 和 console.log() 的使用示例:

console.log(2 ** 2); // 输出 4console.log(2 ** 3); // 输出 8console.log(2 ** 4); // 输出 16

链判断运算符的诞生(?):

在实际编程中,如果需要读取对象内部的某个属性,常常需要链判断。例如,属性的上一层对象是:

属性的上一层对象是

指数运算符 **

console.log(2 ** 2 ) //4 console.log(2 ** 3 ) //8 console.log(2 ** 4) //16 链判断运算符的诞生(?.)

在实际编程中, 如果读取对象内部的某个属性,往往需要判断一下。 属性的上层对象是否存在。比如,读取 message.body.user.firstName这个属性,安全的写法是写成下面这样。 let message={ body:{ user:{ firstName:'' } } } // 错误的写法;因为这message.body这个值可能没有,会导致报错 const firstName = message.body.user.firstName || 'default'; // 正确的写法 const firstName = (message && message.body && message.body.user && message.body.user.firstName) || 'default'; 有的小伙伴可能会觉得这样会很麻烦,怎么会处理这个问题了。

阅读全文

本文共计799个文字,预计阅读时间需要4分钟。

ES6中引入的链判断运算符[?.]与null安全运算符??是如何诞生的?

指针运算符 ** 和 console.log() 的使用示例:

console.log(2 ** 2); // 输出 4console.log(2 ** 3); // 输出 8console.log(2 ** 4); // 输出 16

链判断运算符的诞生(?):

在实际编程中,如果需要读取对象内部的某个属性,常常需要链判断。例如,属性的上一层对象是:

属性的上一层对象是

指数运算符 **

console.log(2 ** 2 ) //4 console.log(2 ** 3 ) //8 console.log(2 ** 4) //16 链判断运算符的诞生(?.)

在实际编程中, 如果读取对象内部的某个属性,往往需要判断一下。 属性的上层对象是否存在。比如,读取 message.body.user.firstName这个属性,安全的写法是写成下面这样。 let message={ body:{ user:{ firstName:'' } } } // 错误的写法;因为这message.body这个值可能没有,会导致报错 const firstName = message.body.user.firstName || 'default'; // 正确的写法 const firstName = (message && message.body && message.body.user && message.body.user.firstName) || 'default'; 有的小伙伴可能会觉得这样会很麻烦,怎么会处理这个问题了。

阅读全文