JavaScript中?. 和??分别是什么详解

让我来详细讲解JavaScript中?.和??的使用。

?.运算符

?.运算符是ES2020(也称为ES11)中的新功能,它是用于简化可选链式调用的一种语法糖。可选链式调用允许我们选择性地访问一个对象的属性,它避免了访问未定义的对象属性时出现的TypeError错误。

示例1:

const user = {
  name: 'Tom',
  age: 25,
  address: {
    city: 'Shanghai'
  }
};

// 使用可选链式调用
const city = user?.address?.city;
console.log(city);  // 'Shanghai'

// 如果访问的属性不存在,会返回undefined,而不是TypeError错误
const gender = user?.gender?.male;
console.log(gender);  // undefined

// 当我们访问属性时,在属性名之前使用问号(?),它表示如果对象存在该属性,则访问该属性,否则返回undefined。

示例2:

const phone = user.phone?.model;
console.log(phone);  // undefined

// phone是undefined,因为user对象中没有phone属性。

在上面的示例中,我们尝试访问一个未定义的属性phone,?在属性名之前表示如果该对象存在该属性,则访问该属性,否则返回undefined。

??运算符

??运算符也是ES2020中的一个新特性,它是用于提供默认值的一种语法糖。当左侧的操作数为null或undefined时,它会使用右边的操作数作为默认值。

示例1:

const name = null ?? 'defaultName';
console.log(name);  // 'defaultName'

const age = undefined ?? 30;
console.log(age);  // 30

在上面的示例中,如果左侧的值为null或undefined,则使用右侧的默认值。name被赋值为默认名称defaultName,而age被赋值为默认年龄30。

示例2:

const price = 0 ?? 10;
console.log(price);  // 0

// price被赋值为0,因为0不是null或undefined

在上面的示例中,左侧的值为0。请注意,0被视为有效值,因此该值被用作price的值,并且使用默认值10的操作数没有被使用。

希望上述示例已经让你对?.和??运算符有了更加清晰的理解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中?. 和??分别是什么详解 - Python技术站

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

相关文章

  • Javascript Math ceil()、floor()、round()三个函数的区别

    当我们需要将浮点数向上或向下取整时,可以使用 Javascript 中的 Math 对象提供的 ceil()、floor() 和 round() 三个函数。它们的区别如下: Math.ceil() Math.ceil() 方法返回一个大于或等于所传入数字的最小整数,即向上取整。如果传入的是整数,则返回该整数本身。 示例: Math.ceil(4.3); //…

    JavaScript 2023年5月27日
    00
  • 使用 JScript 创建 .exe 或 .dll 文件的方法

    以下是使用 JScript 创建 .exe 或 .dll 文件的方法的完整攻略。 方案1:使用 JScript.NET 创建 .dll 文件 步骤1:打开 Visual Studio 并创建新项目 打开 Visual Studio。在菜单栏上选择“文件” -> “新建” -> “项目”。 在“新建项目”对话框中,选择“Visual J#” -&g…

    JavaScript 2023年5月27日
    00
  • ajax请求get与post的区别总结

    针对“ajax请求get与post的区别总结”,建议分以下几个部分详细讲解: 一、什么是Ajax? Ajax(Asynchronous JavaScript And XML)指的是一种用于在Web页中实现异步请求的技术,在不刷新整个页面的情况下对页面的局部进行更新。简单来说,使用Ajax可以让前端通过异步的方式与后端进行交互和数据传输。 二、get和post…

    JavaScript 2023年6月11日
    00
  • 超全面的JavaScript开发规范(推荐)

    超全面的JavaScript开发规范 JavaScript规范是多数开发者应遵守的一些指导原则,可以提高代码的可读性、可维护性和可扩展性。在本文中,将介绍一个超全面的JavaScript开发规范,以及如何使用它来提高你的代码质量。 1. 命名规范 1.1 变量命名规范 变量名应该具有描述性,能够清楚地反映变量所代表的内容。变量名应采取小写字母,单词之间使用下…

    JavaScript 2023年5月17日
    00
  • JS课堂笔记(4.17-4.21)

    一、循环  1.在程序中,一组被重复执行的语句被称为循环体,能否继续重复执行,取决于循环的终止条件。由循环体及循环的终止条件组成的语句,被称为循环语句。 2.循环执行的过程是①第一次循环:第一次赋值,然后条件判断,执行循环体,最后执行累计。 ②非第一次循环:条件判断,执行循环体,最后执行累计。 3.continue,跳过本次进入下一次循环,从continue…

    JavaScript 2023年4月24日
    00
  • javascript中对Date类型的常用操作小结

    Javascript中对Date类型的常用操作小结 创建Date对象 在 Javascript 中创建 Date 对象的方式有以下几种: 使用 new Date() 构造函数创建一个当前时间的 Date 对象。 let currentDate = new Date(); 使用 new Date(value) 构造函数创建指定时间的 Date 对象,value…

    JavaScript 2023年5月27日
    00
  • ImageZoom 图片放大镜效果(多功能扩展篇)

    ImageZoom是一款非常实用的图片放大镜效果插件,通过该插件可以实现图片放大、缩小、滑动等操作,增强了用户的交互体验。本篇攻略将从多个方面对ImageZoom进行扩展并实例演示,具体如下: 安装 首先,我们需要在页面中引入ImageZoom的相关文件。可以通过cdnjs或unpkg等CDN包管理工具引入ImageZoom的css和js文件。 <he…

    JavaScript 2023年6月10日
    00
  • javascript同步Import,同步调用外部js的方法

    JavaScript同步Import是一种将外部JavaScript文件同步导入到当前JavaScript文件中的方法。这种方法可以让外部JavaScript文件中的函数和变量永久地集成到当前JavaScript文件中。以下是使用该方法的完整攻略: 1. 创建一个外部的JavaScript文件 首先,您需要在与当前JavaScript文件相同的目录中创建一个…

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