ES2020让代码更优美的运算符 (?.) (??)

ES2020(也称为ES11)引入了两个新的运算符,即可选链运算符(?.)和空值合并运算符(??),以使JavaScript代码更加简洁、简单和易于维护。

可选链运算符(?.)

可选链运算符(?.)可用于在不确定对象是否存在的情况下,可以访问对象或其属性的属性。这是一个非常实用的特性,因为它可以帮助我们避免在访问对象的属性时引发"TypeError"错误,同时也可以保持代码的简洁性。

使用可选链运算符访问嵌套属性

在访问嵌套属性时,可选链运算符非常有用。例如:

const person = {
  name: 'Alice',
  address: {
    city: 'Beijing'
  }
};

const cityName = person.address?.city; // 'Beijing'
const zipCode = person.address?.zipCode; // undefined

在上面的示例中,我们使用可选链运算符(?.)来访问"person"对象中的嵌套属性"address.city"。如果"address"对象不存在,则返回undefined。同样,我们使用可选链运算符访问属性"address.zipCode"也将返回undefined。

使用可选链运算符调用函数

可选链运算符还可以很方便地用于调用可能不存在的方法。例如:

const person = {
  name: 'Alice',
  getAddress() {
    return this.address;
  }
};

const zipCode = person.getAddress()?.zipCode; // undefined

在上面的示例中,我们使用可选链运算符(?.)来调用可能不存在的"getAddress"函数。如果"getAddress"函数存在并返回一个对象,则我们可以访问该对象的属性"zipCode"。否则,将返回undefined。

空值合并运算符(??)

空值合并运算符(??)可用于在变量可能为null或undefined的情况下提供默认值。它可以用于任何类型的值,包括对象、数组和函数。它的作用是检查变量是否为null或undefined,并在不是null或undefined的情况下返回该变量的值。如果变量是null或undefined,则返回默认值。

使用空值合并运算符提供默认值

让我们看看一个具体的示例:

const name = null ?? 'Unknown'; // 'Unknown'

在上面的示例中,"name"的值是null,但是我们使用空值合并运算符(??)提供了一个默认值"Unknown"。因此,"name"的值将是"Unknown"。

使用空值合并运算符提供默认函数

空值合并运算符还可以用于提供默认函数,以便在变量为null或undefined的情况下调用该函数并返回其结果。例如:

function getDefaultName() {
  console.log('Calling getDefaultName');
  return 'Unknown';
}

const name = null ?? getDefaultName(); // Calling getDefaultName
                                      // 'Unknown'

在上面的示例中,"name"的值是null,我们使用空值合并运算符(??)提供了一个默认函数"getDefaultName"。因此,"getDefaultName"将被调用,并返回"Unknown"。这就是为什么我们可以看到"Calling getDefaultName"打印到控制台的原因。

总之,可选链运算符(?.)和空值合并运算符(??)是非常实用的新特性,它们可以帮助我们更轻松地编写简单而且易于维护的JavaScript代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ES2020让代码更优美的运算符 (?.) (??) - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript的内置对象Math和字符串详解

    Math是JavaScript内置的对象,它包含了数学相关的函数和属性。在编写数字计算相关的代码时,Math对象是非常有用的。本文将详细讲解Math对象的常见函数和属性以及字符串相关的内容。 Math对象 Math对象中封装了大量常用的数学函数和常量,可以用来进行随机数生成、取整、取绝对值、求平方根等一系列常用的操作。 常见函数和用法 下面是常用函数的列表:…

    JavaScript 2023年5月27日
    00
  • JS中filter( )数组过滤器的使用

    下面是关于”JS中filter()数组过滤器的使用”的详细讲解。 简介 filter()是JavaScript数组对象的函数,它可以基于某一条件对数组进行过滤,在返回的新数组中只保留符合条件的值。使用数组过滤器可以只保留想要的值,同时节省代码。filter()方法不会修改原始数组,它会返回一个新数组,所以在使用时需要记住将它赋值给一个变量来保存新数组。 使用…

    JavaScript 2023年5月27日
    00
  • 详解用场景去理解函数柯里化(入门篇)

    详解用场景去理解函数柯里化(入门篇)完整攻略 什么是函数柯里化? 函数柯里化是一种将具有 n 个参数的函数转换成只接受一个参数的函数,并返回一个新函数的技术。这个新函数会接受剩余的参数并返回结果。这个过程就像为函数的第一个参数绑定值一样,常用的方式是使用闭包保存参数和状态,再通过函数的多次调用形成链式调用的效果。 柯里化的优势和适用场景 函数柯里化可以让你更…

    JavaScript 2023年5月19日
    00
  • JavaScript if else

    JavaScript 中的 if else 语句是一种流程控制结构,它根据条件执行不同的代码块。if 语句用于在条件为 true 时执行代码块,而 else 语句用于在条件为 false 时执行代码块。 if else 语句的语法如下: if (condition) { // some code } else { // some other code } 其…

    Web开发基础 2023年3月30日
    00
  • JavaScript编程中实现对象封装特性的实例讲解

    实现对象封装特性是JavaScript编程中的一个关键技能,它可以提高代码的可维护性和可读性,同时还可以提高代码的安全性和灵活性。下面是一个完整的实现对象封装特性的攻略,包含了两个示例说明。 一、对象的封装特性 对象的封装特性是JavaScript编程中的一个重要特性,它可以将属性和方法封装到对象中,防止外部直接访问和修改这些数据。这种方式可以提高代码的安全…

    JavaScript 2023年6月10日
    00
  • javascript截取字符串小结

    JavaScript截取字符串小结 在JavaScript中,截取字符串是很常见的操作。这篇文章将为你介绍如何使用JavaScript截取字符串,并提供一些示例说明。 截取字符串的方式 1. substring方法 使用substring方法可以通过传递起始索引和结束索引来截取字符串。 let str = ‘这是一个字符串’; let result = st…

    JavaScript 2023年5月28日
    00
  • JavaScript获取用户所在城市及地理位置

    JavaScript获取用户所在城市及地理位置可以通过浏览器的Geolocation API或第三方API实现。以下为详细攻略: 1. 使用浏览器的Geolocation API 1.1 获取经纬度 使用Geolocation API可以获取用户的经纬度信息,从而进一步获取用户所在城市等位置信息。 if (navigator.geolocation) { n…

    JavaScript 2023年6月11日
    00
  • JS仿JQuery选择器功能

    下面是JS仿JQuery选择器功能的完整攻略,包含如何实现选择器、示例说明以及注意事项等。 选择器实现原理 实现JS仿JQuery选择器功能的核心在于通过遍历DOM树,找到与选择器匹配的元素。以下是具体实现方法: 解析选择器字符串,获取选择器匹配的元素类型和其他属性,如类名、ID等。 遍历DOM树,从根节点开始,递归查找所有节点,将匹配选项和节点做比对。 检…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部