你可能从未使用过的11+个JavaScript特性(小结)

下面是详细讲解“你可能从未使用过的11+个JavaScript特性(小结)”的攻略。

介绍

本文将讲解11+个在JavaScript中常被忽略的特性。包括可选链操作符、空合并运算符、BigInt、Promise.allSettled()、Array.flat()、Array.flatMap()、Object.fromEntries()、String.trimStart()和trimEnd()、相等运算符(==和!=)、严格相等运算符(===和!==)、null赋值运算符(??)。

可选链操作符

可选链操作符(?.)是一个新的操作符,可以帮助我们避免在链式调用中因为某个属性或方法不存在而导致的TypeError问题。示例代码如下:

const person = {
  name: 'John',
  pet: {
    type: 'dog',
    name: 'Rufus'
  }
};

console.log(person.pet?.name); // "Rufus"
console.log(person.pet?.age); // undefined
console.log(person.pet.age); // throws TypeError

空合并运算符

空合并运算符(??)可以帮助我们在对nullish(null或undefined)值进行取值操作时简化代码。示例代码如下:

const a = null;
const b = undefined;
const c = 'Hello';

console.log(a ?? b); // undefined
console.log(a ?? c); // "Hello"
console.log(b ?? c); // "Hello"

BigInt

BigInt可以帮助我们处理大整数(超过2的53次方-1,也就是JavaScript的Number类型的最大值)。示例代码如下:

const bigInt1 = BigInt(Number.MAX_SAFE_INTEGER) + 1n;
const bigInt2 = 9007199254740993n;
console.log(bigInt1); // 9007199254740993n
console.log(bigInt2); // 9007199254740993n
console.log(bigInt1 === bigInt2); // true

Promise.allSettled()

Promise.allSettled()可以帮助我们同时处理多个Promise,并且不会因为其中某个Promise失败而导致整个操作失败。示例代码如下:

const promises = [
  Promise.resolve(1),
  Promise.reject('error'),
  Promise.resolve(3)
];

Promise.allSettled(promises)
  .then(results => console.log(results))
  .catch(error => console.log(error));

// 输出:
// [
//   {status: "fulfilled", value: 1},
//   {status: "rejected", reason: "error"},
//   {status: "fulfilled", value: 3}
// ]

Array.flat()

Array.flat()可以帮助我们将多维数组转化为一维数组。示例代码如下:

const arr = [1, [2, [3, [4]]]];
console.log(arr.flat()); // [1, 2, [3, [4]]]
console.log(arr.flat(2)); // [1, 2, 3, [4]]

Array.flatMap()

Array.flatMap()可以帮助我们在映射数组的同时展开其结果。示例代码如下:

const arr = ['1 2', '3 4', '5 6'];
const newArray = arr.flatMap(str => str.split(' ').map(Number));
console.log(newArray); // [1, 2, 3, 4, 5, 6]

Object.fromEntries()

Object.fromEntries()可以将由键值对组成的二维数组转化为对象。示例代码如下:

const entries = [['a', 1], ['b', 2], ['c', 3]];
console.log(Object.fromEntries(entries)); // {a: 1, b: 2, c: 3}

String.trimStart()和trimEnd()

String.trimStart()和trimEnd()可以帮助我们去除字符串开头和结尾的空格。示例代码如下:

const str = '   hello world   ';
console.log(str.trimStart()); // "hello world   "
console.log(str.trimEnd()); // "   hello world"

相等和严格相等运算符

相等运算符(==和!=)和严格相等运算符(===和!==)可以帮助我们判断两个值是否相同。其中,严格相等运算符在比较时会同时比较变量的值和类型。示例代码如下:

const num1 = 1;
const num2 = '1';

console.log(num1 == num2); // true
console.log(num1 === num2); // false

null赋值运算符

null赋值运算符(??)可以帮助我们对变量进行nullish判断,并在变量不存在或者为nullish时进行默认值的赋值操作。示例代码如下:

const a = null;
const b = undefined;
const c = 'Hello';

console.log(a ?? 'default'); // 'default'
console.log(b ?? 'default'); // 'default'
console.log(c ?? 'default'); // 'Hello'

结论

在JavaScript开发中,有很多看起来不起眼的特性其实可以极大地提高代码的质量和效率。希望你能够通过本文学到一些新的技巧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你可能从未使用过的11+个JavaScript特性(小结) - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 可以关闭计算机的js脚本

    针对“可以关闭计算机的js脚本”的问题,我会给出以下详细讲解。 什么是可以关闭计算机的JS脚本? 可以关闭计算机的JS脚本是指可以通过JS代码执行来关闭计算机的技术手段。它能够在浏览器上执行JS代码,从而实现强制关闭电脑等行为。这种脚本不仅具有破坏性,而且对受害者的电脑资料造成威胁。 如何编写可以关闭电脑的JS脚本? 为了编写可以关闭电脑的JS脚本,我们需要…

    Java 2023年6月15日
    00
  • springboot实现通过路径从磁盘直接读取图片

    Spring Boot实现通过路径从磁盘直接读取图片 在Spring Boot应用程序中,我们可以通过路径从磁盘直接读取图片,并将其显示在Web页面上。在本文中,我们将介绍如何实现这个功能,并提供两个示例说明。 实现方法 要实现通过路径从磁盘直接读取图片的功能,我们可以使用Spring Boot的静态资源处理器。静态资源处理器是Spring Boot框架提供…

    Java 2023年5月18日
    00
  • SpringBoot MyBatis保姆级整合教程

    SpringBoot MyBatis整合教程可以分为以下几个步骤: 1. 创建SpringBoot工程 在开始整合Mybatis之前,我们需要先创建一个SpringBoot工程。可以通过Spring Initializr来进行创建,在创建时我们需要添加Web、Mybatis以及MySQL Driver这三个依赖。 2. 配置数据源 在application.…

    Java 2023年5月20日
    00
  • Javaweb使用Maven工具与Tomcat的方法详解

    Javaweb使用Maven工具与Tomcat的方法详解 什么是Maven? Maven是一个Java项目管理工具,它可以帮助我们管理项目的依赖,构建,测试等工作。 为什么需要Maven? 抽象依赖关系,易于维护 统一构建方式,减少人为出错 有助于代码重用 前置条件 在开始Maven项目之前,您需要做一些准备工作: 安装Java JDK 安装Apache M…

    Java 2023年5月20日
    00
  • Java中ShardingSphere 数据分片的实现

    非常感谢您对“Java中ShardingSphere 数据分片的实现”的关注。下面是大致的攻略: 1. 什么是ShardingSphere ShardingSphere是一个开源的分布式数据库中间件解决方案,提供数据库分片、分布式事务、数据治理等功能。它由Apache ShardingSphere孵化经过一年多的孵化过程,于2021年2月正式成为Apache…

    Java 2023年5月20日
    00
  • Java开发之普通web项目转为Maven项目的方法

    下面是详细讲解Java普通web项目转为Maven项目的方法: 1. 确认项目结构 在转换前,需要确认项目的目录结构和Java版本,确保可以通过Maven进行构建。 一般来说,普通web项目的结构是类似这样的: project-root ├── src │ ├── main │ │ ├── java │ │ │ ├── com │ │ │ │ └── exa…

    Java 2023年5月20日
    00
  • Java 时间日期详细介绍及实例

    Java 时间日期详细介绍及实例 1. Java 时间日期简介 Java中用于表示时间和日期的主要类是java.util.Date类和java.util.Calendar类,从Java8开始还引入了新的日期时间API:java.time包,包含了一组全新的类用于时间日期的处理。 2. Java.util.Date类 java.util.Date是Java最早…

    Java 2023年5月20日
    00
  • 计算Java数组长度函数的方法以及代码分析

    下面是计算Java数组长度的方法和代码分析的详细攻略: 1. 计算Java数组长度的方法 Java数组的长度可以通过以下两种方式来计算: 1.1 使用数组的length属性 Java中每个数组都有一个名为length的公共final属性,它表示该数组的长度,即:数组中元素的个数。使用数组的length属性可以快速、简单地获取数组的长度。以下是使用数组的len…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部