我的编程空间,编程开发者的网络收藏夹
学习永远不晚

分享几个JavaScript运算符的使用技巧

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

分享几个JavaScript运算符的使用技巧

ECMAScript发展进程中,会有很多功能的更新,比如销毁,箭头功能,模块,它们极大的改变JavaScript编写方式,可能有些人喜欢,有些人不喜欢,但像每个新功能一样,我们最终会习惯它们。新版本的ECMAScript引入了三个新的逻辑赋值运算符:空运算符,AND和OR运算符,这些运算符的出现,也是希望让我们的代码更干净简洁,下面分享几个优雅的JavaScript运算符使用技巧

一、可选链接运算符【?.】

可选链接运算符(Optional Chaining Operator) 处于ES2020提案的第4阶段,因此应将其添加到规范中。它改变了访问对象内部属性的方式,尤其是深层嵌套的属性。它也可以作为TypeScript 3.7+中的功能使用。

相信大部分开发前端的的小伙伴们都会遇到null和未定义的属性。JS语言的动态特性使其无法不碰到它们。特别是在处理嵌套对象时,以下代码很常见:


if (data && data.children && data.children[0] && data.children[0].title) {
    // I have a title!
}


上面的代码用于API响应,我必须解析JSON以确保名称存在。但是,当对象具有可选属性或某些配置对象具有某些值的动态映射时,可能会遇到类似情况,需要检查很多边界条件。

这时候,如果我们使用可选链接运算符,一切就变得更加轻松了。它为我们检查嵌套属性,而不必显式搜索梯形图。我们所要做的就是使用“?” 要检查空值的属性之后的运算符。我们可以随意在表达式中多次使用该运算符,并且如果未定义任何项,它将尽早返回。

对于静态属性用法是:


object?.property

对于动态属性将其更改为:


object?.[expression] 

上面的代码可以简化为:


let title = data?.children?.[0]?.title;

然后,如果我们有:


let data;
console.log(data?.children?.[0]?.title) // undefined

data  = {children: [{title:'codercao'}]}
console.log(data?.children?.[0]?.title) // codercao

这样写是不是更加简单了呢? 由于操作符一旦为空值就会终止,因此也可以使用它来有条件地调用方法或应用条件逻辑


const conditionalProperty = null;
let index = 0;

console.log(conditionalProperty?.[index++]); // undefined
console.log(index);  // 0

对于方法的调用你可以这样写


object.runsOnlyIfMethodExists?.()

例如下面的parent对象,如果我们直接调用parent.getTitle(),则会报Uncaught TypeError: parent.getTitle is not a function错误,parent.getTitle?.()则会终止不会执行


let parent = {
    name: "parent",
    friends: ["p1", "p2", "p3"],
    getName: function() {
      console.log(this.name)
    }
  };
  
  parent.getName?.()   // parent
  parent.getTitle?.()  //不会执行
  

与无效合并一起使用

提供了一种方法来处理未定义或为空值和表达提供默认值。我们可以使用??运算符,为表达式提供默认值


console.log(undefined ?? 'codercao'); // codercao

因此,如果属性不存在,则可以将无效的合并运算符与可选链接运算符结合使用以提供默认值。


let title = data?.children?.[0]?.title ?? 'codercao';
console.log(title); // codercao

二、逻辑空分配(?? =)


expr1 ??= expr2

逻辑空值运算符仅在空值(空值或未定义)时才将值分配给expr1,表达方式:


x ??= y

可能看起来等效于:


x = x ?? y;

但事实并非如此!有细微的差别。

空的合并运算符(??)从左到右操作,如果x不为空,则短路。因此,如果x不为null或未定义,则永远不会对表达式y进行求值。因此,如果y是一个函数,它将根本不会被调用。因此,此逻辑赋值运算符等效于


x ?? (x = y);

三、逻辑或分配(|| =)

此逻辑赋值运算符仅在左侧表达式为 falsy值时才赋值。Falsy与null有所不同,因为falsy可以是任何一种值:false,0,“”,null,undefined和NaN等

语法


x ||= y

等同于


x || (x = y)

在我们想要保留现有值(如果不存在)的情况下,这很有用,否则我们想为其分配默认值。例如,如果搜索请求中没有数据,我们希望将元素的内部HTML设置为默认值。否则,我们要显示现有列表。这样,我们避免了不必要的更新和任何副作用,例如解析,重新渲染,失去焦点等。我们可以简单地使用此运算符来使用JavaScript更新HTML:


document.getElementById('search').innerHTML ||= '<i>No posts found matching this search.</i>'

四、逻辑与分配(&& =)

可能你已经猜到了,此逻辑赋值运算符仅在左侧为真时才赋值。因此:


x &&= y

等同于


x && (x = y)

最后

本次分享几个优雅的JavaScript运算符使用技巧,重点分享了可选链接运算符的使用,这样可以让我们不需要再编写大量我们例子中代码即可轻松访问嵌套属性。但是IE不支持它,因此,如果需要支持该版本或更旧版本的浏览器,则可能需要添加Babel插件。对于Node.js,需要为此升级到Node 14 LTS版本,因为12.x不支持该版本。

如果你也有优雅的优雅的JavaScript运算符使用技巧,请不要吝惜,在评论区一起交流~

以上就是分享几个JavaScript运算符的使用技巧的详细内容,更多关于JavaScript运算符的使用的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

分享几个JavaScript运算符的使用技巧

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C语言中+=运算符的使用技巧分享

+= 运算符是一种复合赋值运算符,它通过将变量的当前值与表达式求和并将其存储回变量来简化 код, 累加变量和链式赋值。它可用于累加数组元素、递增计数器等。C 语言中 += 运算符的使用技巧+= 运算符+= 运算符是一种复合赋值运算符,
C语言中+=运算符的使用技巧分享
2024-04-03

js异或运算符^小技巧分享

这篇文章主要介绍了js异或运算符^小技巧,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-17

探索Python运算符:掌握Python运算符的使用技巧

深入理解Python运算符:掌握Python运算符的使用方法,需要具体代码示例Python是一种简单易学的编程语言,它提供了丰富的运算符来进行各种数值操作。本文将深入探讨Python运算符的使用方法,并通过具体的代码示例来加深理解。算术
探索Python运算符:掌握Python运算符的使用技巧
2024-01-20

分享shell编程中的几个小技巧

1、打印一些头信息command << dilimiter…………dilimiter 以分界符号dilimiter中的内容作为命令的标准输入常用在echo命令中,这样就避免了没输出一行就要使用一个echo命令,同时,输出格式的调整也相应
2022-06-04

Golang中除法运算符的使用技巧

Golang中除法运算符的使用技巧在Golang中,除法运算符/是用来进行除法操作的,但在实际应用中可能会遇到一些特殊情况或者需要注意的地方。本文将介绍Golang中除法运算符的使用技巧,并给出具体的代码示例。整数除法和浮点数除法在G
Golang中除法运算符的使用技巧
2024-03-13

掌握Python运算符的巧妙应用:条件运算符、优先级运算符的技巧应用

了解Python运算符的巧妙运用:条件运算符、优先级运算符的使用技巧Python作为一门广泛应用的编程语言,提供了丰富的运算符,让程序员可以更加灵活地处理不同的运算逻辑。本文将介绍Python中条件运算符和优先级运算符的使用技巧,并提供具
掌握Python运算符的巧妙应用:条件运算符、优先级运算符的技巧应用
2024-01-20

TypeScript Typeof运算符的5个实用技巧详解

这篇文章主要为大家介绍了TypeScript Typeof运算符的5个实用技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

VB.NET比较运算符的使用技巧是什么

VB.NET比较运算符的使用技巧是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。VB.NET编程语言中有很多种运算符需要我们去熟练的掌握,才能方便于实际的开发,提高编程效率
2023-06-17

编程热搜

目录