首页 > 其他分享 >JS可选链运、逻辑或、空置合并运算符

JS可选链运、逻辑或、空置合并运算符

时间:2025-01-14 16:10:06浏览次数:1  
标签:undefined 链运 JS 运算符 headers null config method

这段代码中包含了以下几个现代 JavaScript 的语法特性:

  1. 可选链运算符 (?.)
  2. 逻辑或运算符 (||)
  3. 空值合并运算符 (??)

让我们逐一分析这些语法,以及它们在代码中的作用。


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

语法含义
可选链运算符 ?. 用于安全访问对象属性或调用方法。如果链式访问中的某个部分是 nullundefined,整个表达式会短路,返回 undefined,而不会抛出错误。

例子:

const config = null;
// 使用可选链
console.log(config?.method); // undefined
// 不使用可选链(会报错)
console.log(config.method); // TypeError: Cannot read properties of null

在代码中的两处:

const method = config?.method || 'get';
const header = config?.headers['Content-Type'] ?? '';
  • config?.method 的作用: 如果 confignullundefined,表达式返回 undefined;否则返回 config.method
  • config?.headers['Content-Type'] 的作用: 如果 configconfig.headersnullundefined,表达式返回 undefined;否则返回 config.headers['Content-Type']

2. 逻辑或运算符 (||)

语法含义
逻辑或运算符返回第一个真值(truthy value),如果左侧为假值(falsy),则返回右侧的值。

常见假值(falsy values):

  • false
  • 0
  • ''(空字符串)
  • null
  • undefined
  • NaN

示例:

const value = undefined || 'default'; // 返回 'default'
const value2 = 0 || 'default'; // 返回 'default'(因为 0 是假值)
const value3 = 'hello' || 'default'; // 返回 'hello'(因为 'hello' 是真值)

在代码中:

const method = config?.method || 'get';
  • 如果 config?.methodnullundefined'' 或其他假值,则使用默认值 'get'
  • 如果 config?.method 是真值(如 'post'),则直接使用。

3. 空值合并运算符 (??)

语法含义
空值合并运算符 ?? 用于处理 nullundefined 的情况,返回第一个不是 nullundefined 的值。

|| 的区别:

  • || 会将所有假值(如 0false'' 等)视为需要替换的情况。
  • ?? 只在值为 nullundefined 时才会替换。

示例:

const value = null ?? 'default'; // 返回 'default'
const value2 = undefined ?? 'default'; // 返回 'default'
const value3 = 0 ?? 'default'; // 返回 0(因为 0 不是 null 或 undefined)

在代码中:

const header = config?.headers['Content-Type'] ?? '';
  • 如果 config?.headers['Content-Type']nullundefined,则返回空字符串 ''
  • 如果 config?.headers['Content-Type'] 有值(即使是 false0),则直接返回该值。

代码整体解释

const method = config?.method || 'get';
  • 检查 config 是否存在,以及它是否有 method 属性。
  • 如果 config?.method 为假值(nullundefined'' 等),则默认使用 'get'
const header = config?.headers['Content-Type'] ?? '';
  • 检查 config 是否存在,以及它是否有 headers 属性,同时访问 headers['Content-Type']
  • 如果 config?.headers['Content-Type']nullundefined,则返回空字符串 ''

语法组合的意义

这段代码通过结合 可选链逻辑或空值合并运算符 实现了以下功能:

  1. 安全性:防止对象访问时可能出现的空引用错误(TypeError)。
  2. 默认值设置:在目标值不存在或无效时,提供合适的默认值(如 'get''')。
  3. 简洁性:避免多重嵌套的条件判断。

等效代码(未使用现代语法)

如果不使用这些现代语法,等效代码会变得冗长且不直观:

let method;
if (config && config.method) {
  method = config.method;
} else {
  method = 'get';
}

let header;
if (config && config.headers && config.headers['Content-Type'] != null) {
  header = config.headers['Content-Type'];
} else {
  header = '';
}

可以看出,现代语法极大地提高了代码的可读性和开发效率。

标签:undefined,链运,JS,运算符,headers,null,config,method
From: https://www.cnblogs.com/linxmouse/p/18671016

相关文章

  • python+django/flask的OA管理系统java+nodejs+php-计算机毕业设计
    目录技术栈和环境说明具体实现截图预期达到的目标系统设计详细视频演示技术路线解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示研究方法感恩大学老师和同学源码获取技术栈和环境说明本系统以Python开发语言......
  • Node.js 如何实现文件夹内文件批量重命名
    文章目录一、引言二、Node.js简介2.1是什么2.2优势三、Node.js批量重命名原理3.1涉及的核心模块3.2关键函数四、实战步骤4.1环境搭建4.2代码实现4.3代码解释五、案例分析5.1场景描述5.2解决方案六、可能遇到的问题与解决方法6.1常见错误6.2解决方案七......
  • 前端必知必会-Node.js 连接MySQL 插入数据
    文章目录Node.js连接MySQL插入数据插入表插入多条记录结果对象获取插入的ID总结Node.js连接MySQL插入数据插入表要填充MySQL中的表,请使用“INSERTINTO”语句。示例获取您自己的Node.js服务器在“customers”表中插入一条记录:varmysql=require('my......
  • 前端必知必会-Node.js连接MySQL 查询数据
    文章目录Node.js连接MySQL查询数据从表中查询数据选择列结果对象Fields对象总结Node.js连接MySQL查询数据从表中查询数据要从MySQL中的表中查询数据,请使用“SELECT”语句。示例获取您自己的Node.js服务器从“customers”表中查询所有记录,并显示结果对象:......
  • JSP林业局办公用品管理系统的设计与实现2tnjd--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与目的随着林业局的日常办公需求不断增长,办公用品的管理变得日益复杂。传统的人工管理方式不仅效率低下,还容易出现误差。因此,设计并实......
  • JSP零食网络购物平台0r503--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、研究背景随着互联网的快速发展......
  • JSP乐宠宠物医院管理系统7wmp9程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、课题名称乐宠宠物医院管理系统......
  • JSP离散数学考试系统46229程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景离散数学作为计算机科学及相关领域的重要基础课程,其教学效果的评估方式需要与时俱进。传统的纸质考试方式不仅耗费大量资源,而且难以全......
  • 如何在虚拟主机或IIS中增加JSON扩展名的MIME类型?
    在虚拟主机或IIS中增加JSON扩展名的MIME类型是确保服务器正确处理JSON文件的关键步骤。以下是针对IIS7及以上版本的具体操作方法和注意事项,帮助您顺利完成设置。操作步骤打开IIS管理器在服务器上启动IIS管理器,连接到目标站点。选择站点在左侧树形结构中,展开服务器节点......
  • 如何在虚拟主机或 IIS 中增加 JSON 扩展名的 MIME 类型?
    在虚拟主机或IIS中增加JSON扩展名的MIME类型,可以按照以下步骤进行:IIS7.0及以上版本打开IIS管理器:在服务器上打开IIS管理器。选择站点:在左侧树状结构中选择要配置的站点。进入MIME类型设置:在右侧操作面板中找到“MIME类型”并点击进入。添加......