聊聊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日

相关文章

  • js之encodeURI、encodeURIComponent、decodeURI、decodeURIComponent

    1. encodeURI与encodeURIComponent encodeURI和encodeURIComponent都是用于对 url 进行编码的方法,它们可以将字符串编码为 URI(Uniform Resource Identifier, 统一资源标示符)格式,使其具有以下特点:- 可以在所有计算机和网络设备上使用- 能够进行全球化字符集的支持(包括的…

    JavaScript 2023年5月19日
    00
  • javascript正则表达式分析第1/2页

    “javascript正则表达式分析第1/2页”的完整攻略可以分为以下几步: 学习正则表达式的基本概念和语法。 正则表达式是用来匹配和处理字符串的一种工具,通过特定的符号和规则对字符串进行筛选和操作。 在Javascript中,正则表达式用斜杠(/)括起来,例如:/pattern/。 正则表达式支持特殊字符、元字符和限定符等语法,例如:^表示匹配字符串开头,…

    JavaScript 2023年6月10日
    00
  • JavaScript数组前面插入元素的方法

    JavaScript 数组前面插入元素有多种方法,下面详细讲解一下。 使用unshift()方法 unshift() 方法可向数组的开头添加一个或多个元素,并返回新的长度。语法如下: array.unshift(element1, …, elementN) 例如,我们有一个数组 fruits,它包含了 “Banana” 和 “Orange” 两个元素: …

    JavaScript 2023年5月27日
    00
  • 一文彻底理解js原生语法prototype,__proto__和constructor

    一文彻底理解js原生语法prototype, __proto__ 和 constructor 什么是 prototype 在 JavaScript 中,每个函数都有一个 .prototype 属性。这个属性是一个指向对象的引用,它被称为原型对象(prototype object)。 如果在函数对象中定义了某个属性或方法,则该函数的所有实例都将继承该属性或方法…

    JavaScript 2023年6月10日
    00
  • Bootstrap table的使用方法

    以下是关于Bootstrap table的使用方法的完整攻略。 Bootstrap table是什么? Bootstrap table是一个基于Bootstrap开发的强大的表格插件,提供了丰富的功能和定制选项,使得开发人员可以快速创建高度定制化的表格。 如何引入Bootstrap table? 在使用Bootstrap table之前,我们需要先引入Boo…

    JavaScript 2023年6月11日
    00
  • 使用Vuex解决Vue中的身份验证问题

    使用Vuex解决Vue中的身份验证问题需要以下步骤: 1. 创建Vuex Store 定义一个Vuex store,该store中包含用户相关的数据,如用户是否已登录、用户名等。其中,用户是否已登录是用来判断用户登录状态的重要标志。 import Vue from `vue` import Vuex from `vuex` Vue.use(Vuex) con…

    JavaScript 2023年6月11日
    00
  • JavaScript实现的一个日期格式化函数分享

    现在我来为你讲解如何实现JavaScript的一个日期格式化函数。 知识储备 在编写日期格式化函数之前,我们需要先掌握以下知识: JavaScript中的Date对象和相关API 正则表达式的基本使用 字符串的基本操作方法 编写思路 当我们要将一个日期格式化成指定的格式时,我们需要将日期对象转换成字符串,然后按照特定的格式进行拼接。 首先,我们需要传入两个参…

    JavaScript 2023年6月10日
    00
  • JavaScript实现时钟功能

    实现时钟功能是JavaScript中常见的任务之一,接下来我将分享一下实现时钟功能的完整攻略,包括代码和示例说明: 一、需求分析 实现一个时钟功能,需要具备以下基本需求: 能够显示当前时间 时间显示需要实时更新 时间格式需要符合常见的12小时制或24小时制的格式 二、实现步骤 HTML结构 在HTML中需要定义一个显示时间的DOM元素,用来展示时间。可以定义…

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