聊聊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中常见的4种创建对象方式与优缺点

    关于JavaScript中常见的四种创建对象方式和它们的优缺点的详细讲解如下: 一、对象字面量方式 使用对象字面量方式创建对象是JavaScript中最常见、最简单的方式。该方法的语法非常简洁,只需在大括号中定义对象属性和方法即可。 示例代码如下: // 创建一个对象 var obj = { name: "Lucy", age: 20, …

    JavaScript 2023年5月27日
    00
  • 使用js实现将后台传入的json数据放在前台显示

    首先,在使用 JS 实现将后台传入的 JSON 数据放在前台显示之前,我们需要了解 JSON 的基本概念和用法。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以将复杂的数据结构序列化为字符串,方便进行传输和存储。在前端开发中,我们经常需要将后台返回的 JSON 数据通过 JavaScript 解析并渲染到页…

    JavaScript 2023年5月27日
    00
  • sessionStorage存储时多窗口之前能否进行状态共享解析

    当使用sessionStorage存储时,多窗口之间无法进行状态共享。 每个窗口都有自己的全局变量和执行环境,即使是同一个网站的不同页面也是如此。因此,当一个页面向sessionStorage中存储数据时,该数据只会存在于当前窗口的sessionStorage中,并不会被其他窗口所共享。 举个例子,假设有两个页面A和B,都是同一个网站的页面,它们需要在ses…

    JavaScript 2023年6月11日
    00
  • Javascript Math toSource() 方法

    JavaScript中的Math对象并没有toSource()方法。toSource()方法是JavaScript中的一个对象方法,用于返回一个表示对象源代码的字符串。但是,Math对象是一个内置对象,不是一个普通的JavaScript对象,因此不支持toSource()方法。 作为替代,我们可以使用console.dir()方法来查看Math对象属性和方法…

    JavaScript 2023年5月11日
    00
  • JavaScript实现构造json数组的方法分析

    下面是关于“JavaScript实现构造json数组的方法分析”的完整攻略: 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后台数据传输。其本质上是一个JavaScript对象,可以包含多个属性和值,非常适合用于数组和对象的嵌套结构。 如何构造json数组? JSON数组由多个JSON对…

    JavaScript 2023年5月27日
    00
  • Vue+Vant 图片上传加显示的案例

    接下来我将分享一个关于 Vue+Vant 图片上传加显示的完整攻略。我们需要安装 Vant 和 vue-cropper 插件,然后进行如下步骤: 在 HTML 中创建一个上传文件的 input 元素 <input type="file" accept="image/*" @change="handleF…

    JavaScript 2023年6月11日
    00
  • 微信小程序使用navigator实现页面跳转功能

    下面我将为你详细讲解“微信小程序使用navigator实现页面跳转功能”的完整攻略。 1. navigator简介 navigator是微信小程序中的一个组件,用于实现页面跳转功能。可以将navigator理解为H5中的超链接,通过点击跳转到不同的页面。 2. navigator的使用步骤 步骤一:在 app.json 中配置页面路径 在 app.json …

    JavaScript 2023年6月11日
    00
  • js中DOM三级列表(代码分享)

    JS中DOM三级列表(代码分享) 在HTML中,可以通过嵌套使用<ul>和<li>标签来创建无序列表,也可以嵌套使用<ol>和<li>标签来创建有序列表。除此之外,还可以通过嵌套使用<dl>、<dt>和<dd>标签来创建说明列表。在JavaScript中,可以使用DOM操作来…

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