首页 > 其他分享 >你知道js的可选链是什么吗?说说你对它的理解,它有什么应用场景?

你知道js的可选链是什么吗?说说你对它的理解,它有什么应用场景?

时间:2024-12-01 09:32:22浏览次数:8  
标签:city 场景 undefined 选链 js 可选链 user address 属性

我知道 JavaScript 的可选链操作符。它用 ?. 表示,允许开发者安全地访问嵌套对象的属性,而无需显式地检查每个级别的属性是否存在。如果链中的任何属性为 null 或 undefined,表达式将短路并返回 undefined,而不是抛出错误。

理解:

可选链操作符本质上是一系列短路求值的条件判断的简写。 它会依次检查链中的每个属性是否存在。如果某个属性不存在(null 或 undefined),则整个表达式的求值停止,并返回 undefined。如果所有属性都存在,则返回最终属性的值。

应用场景:

  1. 处理可能不存在的嵌套对象属性: 这是最常见的应用场景。例如,从 API 获取的数据可能包含嵌套对象,而某些属性可能并非总是存在。使用可选链可以避免繁琐的 if 语句或三元运算符。

    const user = {
      address: {
        street: '123 Main St',
        // city: 'Anytown',  // city 属性可能不存在
      }
    };
    
    // 传统方法
    let city = user && user.address && user.address.city;
    
    // 使用可选链
    let city = user?.address?.city; 
    
    console.log(city); // undefined (如果 city 不存在)
    
  2. 简化代码,提高可读性: 可选链可以显著减少代码量,使代码更简洁易懂,尤其是在处理深层嵌套对象时。

  3. 与函数调用结合: 可选链不仅可以用于访问属性,还可以用于调用函数。如果函数不存在,则不会执行调用。

    const user = {
      profile: {
        // update: (info) => { ... } // update 函数可能不存在
      }
    };
    
    user?.profile?.update?.({ name: 'John' }); // 如果 update 不存在,不会报错
    
  4. 数组访问: 可选链也可以用于访问数组元素,如果索引无效,则返回 undefined。

    const arr = [1, 2, 3];
    
    console.log(arr?.[3]); // undefined (索引 3 超出范围)
    
  5. 动态属性访问: 结合中括号语法,可选链可以用于访问动态属性。

    const propName = 'city';
    console.log(user?.address?.[propName]);
    

总之,可选链操作符提供了一种优雅而简洁的方式来处理可能不存在的数据,提高了代码的健壮性和可读性,是现代 JavaScript 开发中非常有用的特性。

标签:city,场景,undefined,选链,js,可选链,user,address,属性
From: https://www.cnblogs.com/ai888/p/18579510

相关文章

  • 你有使用过BackboneJS吗?说说它和vue有什么区别?
    Backbone.js轻量级:Backbone.js非常小巧,专注于提供核心结构,例如模型、视图、集合和路由。它依赖于Underscore.js(一个实用程序库)和jQuery(用于DOM操作)。灵活且不拘谨:Backbone.js提供了构建web应用程序的基本构建块,但并没有规定太多的约定或结构。这使得它非常灵活,但也......
  • ssm+jsp733小区物业管理系统 设计 与实现
    博主介绍:专注于Java(springbootssm等开发框架)vue .net phpphythonnode.js  uniapp微信小程序等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟我的博客空间发布了1600+毕设......
  • 汽车租赁管理系统|Java|SSM|JSP| 前后端分离
    【重要1⃣️】前后端源码+万字文档+部署文档【重要2⃣️】正版源码有问题包售后            【包含内容】【一】项目提供非常完整的源码注释【二】相关技术栈文档【三】源码讲解视频                     ......
  • RulesEngine 微软开源的基于json的规则引擎
    以前有简单介绍过基于js的json-rules-engine,以下简单说明下基于dotnet的RulesEngine包含的特性基于json的规则定义多输入支持动态对象输入支持c#表达式支持基于classtype的自定义扩展表达式支持作用域范围参数postrule执行动作独立表达式执行器说明对于基于d......
  • vue.js学习 (day 15)
    插槽:默认插槽   App.vue<template><div><!--2.在使用组件时,组件标签内填入内容--><MyDialog>你确定要删除吗?</MyDialog><MyDialog>你确定要退出本系统吗?</MyDialog></div></template><script&......
  • js 中 file 文件 应用
    文章目录文件上传File对象基本属性文件上传大文件上传文件格式校验通过type属性校验图片格式通过文件名扩展名校验文件解析一、处理图片文件流(以`Blob`格式接收文件流为例)二、处理文本文件流三、处理PDF文件流(借助PDF.js库来展示,需先引入PDF.js相关脚本)bas......
  • Three.js入门-常见几何体
    这章节,我们将介绍Three.js中常见的几何体(Geometry),包括立方体、球体、圆柱体、平面、圆环、圆锥体等。几何体是构建3D模型的基础元素,通过不同的几何体可以创建出各种形状的物体。在Three.js中,几何体是由顶点、面、法线等数据组成的,通过材质(Material)的渲染,可以将几何体显示在......
  • 2019-8-29-02-JS-DOM
    图片轮播是Web开发中最常见的组件之一,这是一篇用原生JavaScript实现简单图片轮播的教程。要实现图片轮播,首先我们要将图片轮播拆分为图片容器、图片、上一页按钮、下一页按钮、底部点选容器、底部点选按钮。下面我们用HTML代码表示。...<divid="page"><divid="Container......
  • 48. Web前端网页案例——【王者荣耀游戏主题网页( 6页)】 大学生期末大作业 html5+css3+
    目录一、网页概述二、网页文件 三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐♬♬♬​​​​​​​欢迎光临我的CSDN!这里是Web前端网页案例大集汇,有各行各业的前端网页案例,每天会持续更......
  • 数字技术助力电力行业低碳化发展路径及典型场景研究报告汇总PDF洞察(附原数据表)
    原文链接:https://tecdat.cn/?p=36371在全球应对气候变化的大背景下,中国积极推进“双碳”战略,一场深刻的能源与经济变革正在展开。本报告合集汇总聚焦于能源领域多方面的关键议题,深入剖析其现状与发展趋势。能源作为中国碳排放的主导因素,火电占比过高致使排放问题突出,而电力行业......