热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScipt小技巧

JavaScipt小技巧1.展开运算符展开运算符太有用了,不提也罢。它允许对数组或字符串等迭代符进行扩展。这对于添加新的值是非常有用的。letarr[1,2,3
JavaScipt 小技巧

1. 展开运算符

展开运算符太有用了,不提也罢。它允许对数组或字符串等迭代符进行扩展。这对于添加新的值是非常有用的。

let arr = [1, 2, 3, 4, 5]let newArr = [...arr, 6, 7]// newArr -> [1, 2, 3, 4, 5, 6, 7]let obj = [{name: "GME", desc: "To the moon"}, {name: "John", desc: "Doe"}]let newObj = [...obj, {name: "Jane", desc: "Doe"}]// newObj = [{...}, {...}, {...}]

这是非常有用的,我已经用过几次了。主要用于更新React中的状态。

2. Set Object

Set对象是Javascript中的一种新的对象类型,可以用来创建没有重复的数组。当你想拥有一个唯一值的列表时,这很有用。

let arr = ["a", "a", "a", "b", "b", "c"]let withSet = [...new Set(array)]// withSet -> ["a", "b", "c"]

当唯一值很重要的时候,我个人已经用过几次了。语法很容易记住,而且Set还有更多的功能,比如.has()函数可以检查Set是否有特定的值。

3. 三元运算符

三元运算符是一个速记的条件运算符。它对于根据其他条件设置值很有用。例如,在React中,如果所有的数据都已加载,那么就可以根据条件来设置View。

let v &#61; 4let x &#61; ""let y &#61; ""if(v > 0){x &#61; "positive"} else {x &#61; "negative"}// Do thislet x &#61; v > 0 ? &#39;positive&#39; : &#39;negative&#39;// And you can chain them! but is hard to read.let x &#61; v > 0 ? y.length > 0 ? &#39;Y <0&#39; : &#39;Y > 0&#39; : &#39;V > 0&#39;

它比使用常规的if要短得多&#xff0c;如果不嵌套&#xff0c;它的可读性也很强。我一直在使用这个&#xff0c;特别是在React或React Native中编程Javascript时。

4. 模板字符串

模板字符串是Javascript中字符串的一种形式。它们用反引号&#xff08;&#96;&#xff09;代替常规引号。它们使用${expression}接受表达式&#xff0c;并且它们可以跨越多行。

let x &#61; string textlet multiX &#61; string text line 1 string text line 2let exprX &#61; string text ${x} string text// -> string text string text string text

我开始越来越多地使用这些。在编写GraphQL查询语句的时候非常好用&#xff0c;基本上是GraphQL查询的标准。

5. ?操作符

?操作符或可选的链式运算符是一个很有用的运算符&#xff0c;用于检查一个值是否已经被设置&#xff0c;当它被设置后再继续。

if(data && data.subdata && data.subdata.name &#61;&#61;&#61; "cool") {console.log("hi")}// Is the same asif(data?.subdata?.name &#61;&#61;&#61; "cool") {console.log("hi")}

我已经写了无穷无尽的if语句来检查一个值是否被设置过&#xff0c;这肯定会帮助解决这个问题。

6. ??操作符

??操作符是一个检查一条语句左值是否为空的操作符&#xff0c;如果为真&#xff0c;它将返回右边的值。

const x &#61; null ?? &#39;string&#39;;// x: "string"const y &#61; 12 ?? 42;// y: 12

当空值检查或返回一个尚未加载的字符串时&#xff0c;这可能非常有用。


推荐阅读
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 本文详细介绍了 Go 语言的关键特性和编程理念,包括其强大的并发处理能力、简洁的语法设计以及高效的开发效率。 ... [详细]
  • Nibblestutotials.net教程 – Blend  Silverlight1系列之Button Basic
    Basic:createonebutton文中三部分所用资源及代码下载:part1,part2,part3Buttonsbasicpart1:drawingNibbl ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • 匠心|传统_2021年度总结 | 葡萄城软件开发技术回顾(上)
    匠心|传统_2021年度总结 | 葡萄城软件开发技术回顾(上) ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 本文介绍如何使用Java实现AC自动机(Aho-Corasick算法),以实现高效的多模式字符串匹配。文章涵盖了Trie树和KMP算法的基础知识,并提供了一个详细的代码示例,包括构建Trie树、设置失败指针以及执行搜索的过程。 ... [详细]
  • 本文详细解析了LeetCode第300题——最长递增子序列的解题方法,特别是如何使用动态规划来高效解决问题。文章不仅提供了详细的代码实现,还探讨了常见的错误理解和正确的解题思路。 ... [详细]
  • 深入理解Java类加载机制及安全防护
    本文探讨了Java类加载的过程,包括加载、验证、准备、解析和初始化五个阶段,并详细解释了每个阶段的具体操作和意义。此外,文章还讨论了Java如何通过双亲委派模型来保障核心API的安全性,以及在特定情况下如何打破这一机制。 ... [详细]
  • 本文详细介绍了Java中的代理模式,包括静态代理、JDK动态代理和Cglib动态代理的实现方式。通过一个火车票销售系统的实例,对比分析了三种代理模式的特点及其应用场景。 ... [详细]
  • 将数组的所有元素递增 1 的 Java 程序 ... [详细]
  • ECharts图表绘制函数集
    本文档提供了使用ECharts库创建柱状图、饼图和双折线图的JavaScript函数。每个函数都详细列出了参数说明,并通过示例展示了如何调用这些函数以生成不同类型的图表。 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • 【Java数据结构和算法】008栈
    目录0、警醒自己一、栈的应用场景和介绍1、栈的应用场景一个实际的场景:我的思考:2、栈的介绍入栈演示图:出栈演示图 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
author-avatar
拍友2602890695
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有