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日

相关文章

  • 浅谈JS读取DOM对象(标签)的自定义属性

    一、什么是DOM对象自定义属性 在HTML标签中,我们可以自定义属性,比如:<div data-id=”123″>自定义属性</div>,这里的data-id即为自定义属性。 在JavaScript中,我们可以通过DOM对象的dataset属性来读取自定义属性的值。 二、JS读取DOM对象(标签)的自定义属性 1.读取单个DOM对象的…

    JavaScript 2023年6月10日
    00
  • JavaScript Try…Catch 声明的 使用方法

    JavaScript中的 Try…Catch 声明可以帮助我们编写更健壮的代码,避免出现未处理的错误。 Try…Catch 声明的语法 Try…Catch 声明由两个部分组成:try块和catch块。try块用于包含可能会抛出错误的代码,而catch块则用于处理错误。 Try…Catch 声明的语法如下: try { // 可能会抛出错误的代…

    JavaScript 2023年5月28日
    00
  • 从此不再惧怕URI编码 JavaScript及C# URI编码详解

    从此不再惧怕URI编码:JavaScript及C# URI编码详解 URI是什么? URI(Uniform Resource Identifier),中文名为统一资源标识符,是用于标识抽象或物理资源的字符串。 在Web中,我们常用URI表示Web资源的位置和ID。 URI分为三个部分: URI = scheme://host[:port]/path[?que…

    JavaScript 2023年5月20日
    00
  • JavaScript跳出循环

    JavaScript中,跳出循环有两种方式:使用break和continue关键字。 1. 使用break关键字 break关键字用于跳出当前循环语句,使程序不再执行循环体中的代码。当程序遇到break关键字时,程序将自动退出当前的循环语句,继续执行后面的代码。 例如,以下代码将循环输出数组中的所有元素,但是当遇到数字3时,程序将跳出循环。 var arr …

    Web开发基础 2023年3月30日
    00
  • 获取JS中网页各种高宽与位置的方法总结

    获取JS中网页各种高宽与位置是前端开发过程中非常重要的操作之一,本篇攻略将会总结一些在实际开发中常用的方法。 使用原生JavaScript获取元素高宽与位置 在JavaScript中,有三个属性可以用来获取元素的高宽与位置,分别为offsetHeight/Width、clientHeight/Width和getBoundingClientRect()。 of…

    JavaScript 2023年6月10日
    00
  • JavaScript面向对象的程序设计(犯迷糊的小羊)

    好的。首先,JavaScript是一门基于对象的编程语言。它提供了许多面向对象编程的特性,如对象、类、继承等。如果您曾经在其他编程语言中使用过面向对象编程,那么理解JavaScript的面向对象编程会相对轻松些。 一、对象 面向对象编程的基础是对象。JavaScript中的对象是一个键-值对的集合,其中值可以是属性或方法。对象可以通过字面量或构造函数创建。 …

    JavaScript 2023年5月27日
    00
  • NodeJS多种创建WebSocket监听的方式(三种)

    下面是NodeJS多种创建WebSocket监听的方式的完整攻略。 标准 WebSocket 创建方式 在 Node.js 中使用 WebSocket 的第一步是将其作为依赖项添加到您的项目中。您可以使用以下命令执行此操作: npm install –save websocket 在您的项目代码中,您需要加载 WebSocket 模块。这可以通过以下代码行…

    JavaScript 2023年5月28日
    00
  • JavaScript 数组some()和filter()的用法及区别

    本篇攻略将详细讲解 JavaScript 数组 some() 和 filter() 方法的用法及区别。在讲解之前,需要明确的是,这两个方法均适用于 JavaScript 数组对象,且均为对数组进行遍历和筛选的方法,但使用方式和作用有所不同。 一、JavaScript 数组 some() 方法 1.1 作用 JavaScript 数组 some() 方法用于检…

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