首页 > 编程语言 >JavaScript中的现代运算符:?.、?? 和 ??=

JavaScript中的现代运算符:?.、?? 和 ??=

时间:2023-12-17 22:33:00浏览次数:56  
标签:空值 const undefined JavaScript 运算符 现代 input null

在JavaScript中,?.????= 是相对较新的运算符,分别用于可选链、空值合并和空值合并赋值。这些运算符提供了更加简洁和安全的方式来处理未定义(undefined)或空(null)的值。

JavaScript的发展一直在不断进步,近年来,ES6及后续版本引入了许多实用的新特性。其中,?.????= 这三个运算符对于简化代码和增强代码的可读性尤为重要。

可选链运算符 (?.)

定义和用途

可选链运算符 ?. 允许你安全地访问对象的深层嵌套属性,而无需担心中间某个环节可能未定义(undefined)或为空(null)。

示例

const person = {
    name: "Alice",
    profile: {
        age: 25,
        address: {
            city: "New York"
        }
    }
};

// 传统的访问方式
const city = person.profile && person.profile.address && person.profile.address.city;

// 使用 ?. 运算符
const cityUsingOptionalChaining = person.profile?.address?.city;

在这个例子中,使用 ?. 可以避免在访问 city 属性之前对每个中间对象进行检查。

空值合并运算符 (??)

定义和用途

空值合并运算符 ?? 用于在左侧的表达式结果为 null 或 undefined 时,返回其右侧的表达式结果。

示例

const input = null;
const defaultValue = "Default";

// 传统的方式
const value = (input !== null && input !== undefined) ? input : defaultValue;

// 使用 ?? 运算符
const valueUsingNullishCoalescing = input ?? defaultValue;

在这个例子中,如果 input 为 null 或 undefined,valueUsingNullishCoalescing 将会是 "Default"

空值合并赋值运算符 (??=)

定义和用途

空值合并赋值运算符 ??=?? 的扩展,它将对左侧的变量进行赋值,如果该变量原本的值为 null 或 undefined。

示例

let name;

// 传统的赋值方式
name = name || "Unknown";

// 使用 ??= 运算符
name ??= "Unknown";

在这个例子中,如果 name 最初是 undefined 或 null,那么它将被赋予 "Unknown"

使用场景和注意事项

  • 可选链(?. 适用于你不确定对象是否完整定义的情况。它减少了代码的冗余并提高了安全性。
  • 空值合并(?? 适合于设置默认值,特别是当你希望区分 false0''(空字符串)与 null/undefined 的场景。
  • 空值合并赋值(??= 适合于需要对变量进行默认值赋值,而不覆盖其他假值(如 0false'')的情况。

这些运算符提供了更加现代和优雅的方式来处理JavaScript中常见的一些问题,使代码更加简洁和易于维护。本文概述了这三个运算符的基本用法和适用场景,希望可以帮助你更好地理解和使用它们。


看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~

专注前端开发,分享前端相关技术干货,公众号:南城大前端(ID: nanchengfe)

标签:空值,const,undefined,JavaScript,运算符,现代,input,null
From: https://blog.51cto.com/react/8863677

相关文章

  • 在浏览器中使用 JavaScript 实现截屏并保存图片的完整指南
    前言在现代的Web应用程序中,有时用户需要能够在浏览器中进行截屏并保存截取的内容为图片。本文将详细介绍如何使用JavaScript在浏览器中实现截屏并保存为图片的功能,并提供一个完整的指南以及示例代码。获取屏幕截图使用HTML5的canvas元素在JavaScript中,我们可以使用H......
  • javascript基础
       ......
  • JavaScript调研
    一、JS初识1、JavaScript一种直译式脚本语言;2、组成部分;(1)ECMAScript语法和基本对象(2)文档对象模型(DOM)处理网页内容的方法和接口(3)浏览器对象模型(BOM)与浏览器进行交互的方法和接口3、JS特点(1)解释性脚本语言(2)用来向HTML页面添加交互行为,可以嵌入HTML......
  • 新时期社区治理能力现代化研究—论文参考
    随着社会的不断发展,国家治理体系的不断完善,我国经济逐渐从计划经济转向市场经济的发展方向,我国社会的发展为了适应市场竞争优胜劣汰的发展规律,其治理体系逐渐趋向于现代化发展,而社区则是社会的基本组成单位,因此社区的发展也逐渐趋向于现代化的发展。社区治理现代化的变革是一个漫长......
  • JavaScript 引擎 V8 年度回顾:新编译器、修改基础架构、改进 GC……
    V8官方博客回顾了2023年的重要变化:通过创新的性能优化,V8不断突破Web领域的可能性界限。比如引入新的中间层编译器,对顶层编译器基础架构、运行时和垃圾回收进行多项改进,从而全面提升速度。除了性能改进之外,V8团队还为JavaScript和WebAssembly添加了许多新功能。比如通......
  • JavaScript: WebGL3D
    fragment.bns 文件用NotePad打开 WebGL3D用tomcat浏览#version300esprecisionmediumpfloat;uniformfloatuR;invec3vPosition;//接收从顶点着色器过来的顶点位置invec4finalLight;//接受顶点着色器传过来的最终光照强度outvec4fragColor;voidmain(){......
  • 前端JavaScript中,对obj对象进行劫持的方式主要有以下几种:
    前端JavaScript中,对obj对象进行劫持的方式主要有以下几种:原型劫持:通过改变对象的原型(prototype)来实现劫持。当一个对象被创建时,它的原型会被存储起来,以便在需要时进行查找。通过将一个对象的原型改为另一个对象或null,可以控制该对象的属性和方法。属性访问劫持:通过在属性访问时......
  • JavaScript
    您只能在HTML输出中使用document.write。如果您在文档加载后使用该方法,会覆盖整个文档。HTML输出流中使用document.write,相当于添加在原有html代码中添加一串html代码。而如果在文档加载后使用(如使用函数),会覆盖整个文档。Javascript脚本代码可被放置在HTML页面的 <body>......
  • 智能农业系统实现代码
    为了实现智能农业系统,我们需要以下几个部分:温湿度传感器、气象降水传感器、光照传感器等硬件设备。控制灌溉、施肥与水混合物的控制器。自动管理机器人农场的MCU(微控制器)。云端服务器,用于存储和处理数据。无线网址分配和人工控制命令的下发模块。以下是一个简单的实现代码示例:impor......
  • JavaScript 浏览本地文件夹
    1.JavaScript浏览本地文件夹button.onclick=asyncfunction(){//给按钮绑定事件try{consthandler=awaitshowDirectoryPicker(//{//mode:'readwrite',//指定读写模式:读/读写//startIn:'documents'//......