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

yizhihongxing

当我们在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流程控制(分支)

    好的!首先,让我们先确定一下“JavaScript流程控制(分支)”的范畴。在JavaScript中,流程控制主要有三种,分别是分支结构、循环结构和跳转结构。而“JavaScript流程控制(分支)”指的是通过条件判断,执行不同代码路径的流程控制方式。 在JavaScript中,常用的条件判断有if…else和switch两种。下面我们将介绍这两种方法的…

    JavaScript 2023年5月27日
    00
  • T-SQL篇如何防止SQL注入的解决方法

    下面是T-SQL篇如何防止SQL注入的解决方法的完整攻略。详细说明了什么是SQL注入、其危害性和如何避免SQL注入攻击。 什么是SQL注入? SQL注入是一种利用SQL查询语句中存在漏洞的攻击方式,攻击者通过输入恶意的SQL代码,使数据库执行非预期的操作。攻击者可以通过注入恶意代码来窃取、篡改、删除或者更改数据库中的数据。 SQL注入的危害性 SQL注入攻击…

    JavaScript 2023年6月11日
    00
  • JS中可能会常用到的一些数据处理方法

    下面是关于JS中可能会常用到的一些数据处理方法的详细攻略。 1. 字符串处理方法 1.1 字符串的拼接 在JS中,我们可以使用加号 (+) 来实现字符串的拼接。例如:var str1 = “Hello,”; var str2 = “world!”; var result = str1 + ” ” + str2; 此时 result 的值为 Hello, wo…

    JavaScript 2023年6月10日
    00
  • 如何正确理解javascript的模块化

    如何正确理解JavaScript的模块化? JavaScript中的模块化是为了更好的组织和管理JavaScript代码而设计的。模块化代码的设计可大大简化和优化我们的开发过程,使代码更容易维护和重用。在JavaScript中,我们可以使用import和export命令来遵循ES6模块化规范进行模块导入和导出。 以下是如何正确理解JavaScript模块化的…

    JavaScript 2023年6月10日
    00
  • 怎么使用javascript深度拷贝一个数组

    下面是详细讲解使用JavaScript深度拷贝一个数组的攻略。 什么是深度拷贝? JavaScript中的对象和数组都是引用类型,当我们对某个对象或数组进行赋值、传参、扩展等操作时,实际上是将其内存地址进行了操作。而如果我们希望得到一个完全独立的新对象或数组,且其值和原对象或数组相等,就需要进行深度拷贝操作。 一、使用JSON对象进行深度拷贝 JSON.st…

    JavaScript 2023年5月27日
    00
  • javascript简单事件处理和with用法介绍

    接下来我将为你详细讲解“Javascript简单事件处理和with用法介绍”的完整攻略。 Javascript简单事件处理 在Web开发中,如何对用户的行为做出响应是非常关键的。Javascript通过事件处理机制,使得我们可以方便地响应用户的行为。 常见的事件类型 Javascript中常见的事件类型包括以下几种: click:点击事件 onload:页面…

    JavaScript 2023年6月11日
    00
  • 关于javascript中this关键字(翻译+自我理解)

    关于JavaScript中this关键字的理解是前端开发中至关重要的一部分,因为它涉及到了JavaScript中的作用域和上下文。以下是关于JavaScript中this关键字的翻译和自我理解的攻略。 什么是this关键字? 在JavaScript中,this是一个特殊的关键字,它表示当前作用域下的对象。但是,它的值在执行上下文中是动态变化的,因此需要特别注…

    JavaScript 2023年6月10日
    00
  • Three.Js实现看房自由小项目

    Three.js实现看房自由小项目攻略 介绍 Three.js是一个基于WebGL的JavaScript 3D库,它可以帮助我们在Web端实现非常炫酷的3D视觉效果,完美地展现产品的三维模型,同时支持丰富的材质、灯光、粒子等效果,可以方便地实现交互效果。 在这篇攻略中,我们将使用Three.js来实现一个看房自由小项目。这个小项目将会模拟一个虚拟房屋,让用户…

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