聊聊JavaScript中.?、??、??=的用法以及含义

当我们在JavaScript中使用对象或者变量时,可能会出现有些属性或者变量是未定义的情况,这时就会用到JavaScript中的三个操作符: .?.????=。下面我将分别详细讲解它们的用法和含义。

. 访问对象属性

首先让我们看下JavaScript中最基本的 . 操作符。这个操作符用于访问对象的属性。例如:

const person = {
  name: 'Jack',
  age: 25,
}

console.log(person.name); // Jack

上述代码中,我们可以通过 . 操作符获取 person 对象中的 name 属性。这是JavaScript中最基本的访问对象属性的方式。

?. 可选链操作符

然而,在JavaScript中,对象的属性可能是 undefined 或者对象本身就是 null,这时直接使用 . 操作符访问属性将会抛出错误。这时我们就可以使用 ?. 操作符进行可选链操作,以确保对象属性存在。例如:

const person = {
  name: 'Jack',
  age: 25,
  address: {
    city: 'Shanghai',
    street: 'Nanjing Road',
  }
}

console.log(person.address?.city); // Shanghai
console.log(person.address?.country); // undefined

上述代码中,我们可以看到通过添加 ?. 操作符后,访问不确定是否存在的 address 对象中的 city 属性不再会报错。如果该属性不存在,该操作符会返回 undefined。这里短路求值很容易理解,即当 person 或者 address 任意一个是 undefined 或者 null 的时候,就会返回结果了,无需继续往下访问了。

?? 空值合并操作符

除了可选链操作符 ?. 之外,JavaScript 又引入了另一个操作符 ??。这个操作符的作用是合并空值,即如果左边的值是 undefined 或者 null,则返回右边的值。例如:

const name = undefined;
console.log(name ?? 'Anonymous'); // Anonymous

const age = null;
console.log(age ?? 0); // 0

在上述代码中,我们可以看到第一个例子, name 变量的值是 undefined,因此返回了 'Anonymous'。而在第二个例子中,因为 age 变量的值是 null,因此返回了 0。需要注意的是,使用 ?? 操作符时需要注意运算的优先级。

??= 空值合并赋值操作符

最后,我们再看一个操作符 ??=。这个操作符可以在一个变量的值为 nullundefined 时,将其赋值为一个默认值。例如:

let name = null;
name ??= 'Anonymous';
console.log(name); // 'Anonymous'

let age = 0;
age ??= 25;
console.log(age); // 0

在上述代码中,我们可以看到第一个例子, name 变量原来的值是 null,因此被赋值为 'Anonymous'。而在第二个例子中,因为 age 变量的值是 0,因此不会被赋值为默认值。需要注意的是,使用 ??= 操作符时也需要注意运算的优先级。

综上所述,这里是对 .?.????= 操作符的详细讲解。希望这些解释能够帮助大家更好地理解这些操作符的作用和使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:聊聊JavaScript中.?、??、??=的用法以及含义 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • JavaScript中Date.toSource()方法的使用教程

    JavaScript中Date.toSource()方法的使用教程 方法简介 Date.toSource() 方法返回当前对象(Date对象)的字符串表示形式,用于与eval() 方法结合使用,以重新生成该对象。这种情况对调试和分析非常有用。 语法结构 dateObj.toSource() 参数说明 该方法没有参数。 返回值 返回一个字符串,表示该对象。 示…

    JavaScript 2023年6月10日
    00
  • setInterval和setTimeout停止的方法

    下面来详细讲解 “setInterval和setTimeout停止的方法” 的完整攻略。 setInterval 和 setTimeout 的基本用法 在深入了解停止方法之前,我们先来回顾一下 setInterval 和 setTimeout 的基本用法。 setInterval 和 setTimeout 都是 JavaScript 中用于进行定时操作的方法…

    JavaScript 2023年6月11日
    00
  • 解析dom中的children对象数组元素firstChild,lastChild的使用

    当我们使用JavaScript解析DOM时,经常需要访问一个元素的子节点。在DOM树种,每个元素节点都有一个名为children的属性,它引用了该元素的所有子节点。children属性返回一个子节点的NodeList对象,可以通过它访问节点列表。在这个NodeList对象中,每个子节点都有一个firstChild和一个lastChild属性,分别是该元素的第…

    JavaScript 2023年6月10日
    00
  • JS类的封装及实现代码

    JS类的封装是指通过将变量和操作封装在一个类中,来实现对变量及操作的保护和控制。类的封装可以提高代码的复用性,可读性和可维护性。 以下是JS类的封装及实现代码的步骤: 1. 设计类的结构 在设计类的结构时,需要考虑类的成员变量和方法,及它们的访问权限。 class MyClass { constructor(prop1, prop2) { this._pro…

    JavaScript 2023年6月10日
    00
  • javascript基础——String

    JavaScript基础 – String 什么是String String是JavaScript中的一种基本数据类型,表示文本字符串。可以使用单引号(‘)、双引号(“)或反引号(“`)来表示一个字符串。 字符串的基本操作 字符串的长度 可以使用字符串的length属性来获取该字符串的长度。 const str = ‘hello, world!’; con…

    JavaScript 2023年5月18日
    00
  • JavaScript中常见获取元素的方法汇总

    我们来详细讲解一下“JavaScript中常见获取元素的方法汇总”。 一、通过ID获取元素 在JavaScript中获取元素的最基本的方式就是通过元素的ID来获取,通过这种方式可以获取HTML中的任何元素。使用document.getElementById()方法可以获取指定ID的元素。 示例代码: // 获取ID为“myButton”的button元素 v…

    JavaScript 2023年6月10日
    00
  • JS实现的JSON数组去重算法示例

    下面是JS实现的JSON数组去重算法示例的完整攻略: 1. 算法介绍 本算法适用于JavaScript中的JSON数组去重。由于JSON数组中元素的数据类型不尽相同,所以需要考虑到各种数据类型的去重情况。 2. 算法步骤 步骤一:遍历数组 遍历JSON数组,将每个元素存储到一个新的数组中。 步骤二:去重 在新的数组中,遍历每个元素,检查它是否已经存在于新数组…

    JavaScript 2023年5月27日
    00
  • javascript时间自动刷新实现原理与步骤

    JavaScript 时间自动刷新实现主要是通过不断更新页面上显示的日期和时间来实现,其实现步骤主要包括以下几步: 创建用于显示时间的 HTML 元素。可以使用 p 或 span 等标签,例如: <p id="time"></p> 创建用于更新时间的 JavaScript 函数。该函数需要通过定时器来不断更新时间,…

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