当前位置: 首页 > news >正文

JavaScript中的?.和??的用法

1、?.(可选链运算符)

在JavaScript中,"?.“是一种叫做"Optional Chaining”(可选链)的新操作符。它允许我们在访问一个可能为null或undefined的属性或调用一个可能不存在的方法时,避免出现错误。
使用?.操作符可以安全地访问对象的属性和方法,而不会发生错误并导致程序停止执行。当对象的属性或方法不存在时,表达式返回undefined,而不是抛出TypeError异常。

1.1 访问对象属性

	const person = {name: 'John',address: {city: 'New York'}};console.log(person.address?.city); // 输出:'New York'// 输出:undefined,因为person对象没有age属性console.log(person.age?.toString()); 

1.2 调用对象方法

	const calculator = {add: function(a, b) {return a + b;}};console.log(calculator.add?.(2, 3)); // 输出:5// 输出:undefined,因为calculator对象没有subtract方法console.log(calculator.subtract?.(5, 2)); 

1.3 链式使用?.

	const user = {profile: {name: 'Alice',email: 'alice@example.com'}};console.log(user?.profile?.name); // 输出:'Alice'// 输出:undefined,因为user对象没有address属性console.log(user?.address?.city); 

注意事项:

  • 使用?.操作符时,如果目标属性或方法存在且可调用,它们将按照正常方式执行。
  • 如果目标为null或undefined,则表达式将立即返回undefined,不会继续尝试访问后续的属性或方法。
  • 操作符不能与[](方括号)一起使用。例如:obj?.[index] 是无效的语法。

2、??(空值合并运算符)

在JavaScript中,"??"是空值合并运算符的用法。它用于判断一个表达式是否为null或undefined,并返回一个默认值。

	const name = null; /*使用??运算符来判断name的值是否为空,如果为空,则赋予默认值"Unknown"*/const displayName = name ??  "Unknown"; console.log(displayName); // 输出: Unknown/*经常在表格或者数据渲染时可以用到,当表格数据为空时,直接显示 - const data = null?? '-'*/
http://www.lryc.cn/news/102665.html

相关文章:

  • Git for linux
  • uniapp小程序,根据小程序的环境版本,控制的显页面功能按钮的示隐藏
  • kotlin 编写一个简单的天气预报app(二)增加搜索城市功能
  • 【分布鲁棒、状态估计】分布式鲁棒优化电力系统状态估计研究[几种算法进行比较](Matlab代码实现)
  • vue中的require
  • Linux进程间共享内存通信时如何同步?(附源码)
  • spring注解驱动开发(二)
  • 【C++】——类和对象
  • 【Docker】使用docker-maven-plugin插件构建发布推镜像到私有仓库
  • 区块链学习笔记
  • 实用上位机--QT
  • os.signal golang中的信号处理
  • Python源码:Tkinter组件布局管理的3种方式
  • 网络防御之VPN
  • VUE使用docxtemplater导出word(带图片) 踩坑 表格循环空格 ,canvas.toDataURL图片失真模糊问题
  • ubuntu 安装 Pycharm社区版
  • IP 监控软件
  • C#实现读写CSV文件的方法详解
  • 04 http连接处理(上)
  • c++(强生成关键字+可变参数模板+emplace)[26]
  • Mysql 数据库开发及企业级应用
  • 【数据结构】_6.队列
  • 7 网络通信(上)
  • MFC图表控件high-speed-charting的使用
  • Unity中常用方法
  • 【监控系统】可视化工具Grafana简介及容器化部署实战
  • VUE之VueRouter页面跳转
  • 【188】Java8利用AVL树实现Map
  • [SQL挖掘机] - 右连接: right join
  • bug篇之基于docker安装nacos(2.1.1)使用dubbo连接不上的问题