ES10新特性你了解多少

ES10的新特性主要有:

对象方法扩展

字符串扩展方法

数组的扩展方法

Symbol 扩展

try...catch 改变

toString() 改变

一。对象方法扩展

const result = Object.fromEntries([
  ["tom", "cat"],
  ["helandi", "spider man"],
]);
console.log("result", result);

const result2 = Object.entries({ hun: "shi" });
console.log("result2", result2);

输出结果:

 

 Object.fromEntries() 方法可以将二维数组转换为对象,Object.entries() 可以将对象转换为二维数组。

二。字符串扩展方法

trimStart(): 清除字符串前面的空格, 

trimEnd(): 清除字符串后面的空格。

const str = '   I love China    ';
const str1 = str.trimStart();
const str2 = str.trimEnd();
console.log('str1', str1);
console.log('str2', str2);

 输出结果:

 三。数组的扩展方法

1.flat

作用:Array.flat() 方法会按照一个可指定的深度递归遍历数组 ,将所有元素与遍历到的子数组的元素合并为一个新数组返回。

返回值:一个包含将数组与子数组中所有元素的新数组

是否改变原有数组:

输出结果:

2.flatMap 

作用:flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。

返回值:一个新的数组,其中每个元素都是回调函数的结果,并且结构深度 depth 值为1。

是否改变原数组:

看个例子:

map() 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

const arr1 = [1, 4, 9, 16];
const map1 = arr1.map((x) => x * 2);
console.log("map1", map1); // [2,8,18,32]

 但是有时,我们需要跳过数组中的某些元素,已上面的例子为例,当我们需要跳过元素 1 时,我们一般采用结合 filter 方法:

const arr1 = [1, 4, 9, 16];
const map2 = arr1.filter((x) => x !== 1).map((x) => x * 2);
console.log("map2", map2); // [8,18,32]

 除了使用 map 和 filter 结合的方式,还有没有其他方式呢?

ES10新特性:使用 flatMap。

const arr1 = [1, 4, 9, 16];
const map3 = arr1.flatMap((x) => (x === 1 ? [] : [x * 2]));
console.log("map3", map3); // [8,18,32]

flatMap 能用于在 map 期间增删数据(也就是修改 items 的数量)。换句话说,它允许你遍历很多项使之成为另一些项,而不是总是一对一,从这个意义上讲,它的作用类似于 filter 的对立面。只需返回一个1项元素数组以保留该项,返回一个多元素数组以添加项,或返回一个0项元素数组以删除该项。

 那 flatMap 和map有什么区别呢?

flatMap 和 map 、深度 depth 为1 的falt 几乎相同,但是 flatMap 通常在合并成一种方法的效率稍微高些。

四。Symbol 扩展 

Symbol.description 用于获取 Symbol 的描述字符串。 

const s = Symbol("spider");
console.log("s", s.description); // spider

 五。try...catch

在ES10 中,try...catch 语句中的参数变为了一个可选项。以前我们写 try...catch 语句时,必须传递一个异常参数,这就意味着,即使我们在 catch 中不需要这个异常参数,也必须要把它传递进去。

try {
  // trycode
} catch (error) {
  console.error('error', error);
}

在 ES10 中,我们可以省略这个参数:

try {
  // trycode
} catch {
  console.error('error', error);
}

六。toString 

在 ES2019中,function.toString() 发生了变化,之前执行这个方法,得到的字符串是去除空白符号的,而现在,得到的字符串是呈现出源码的样子。

function sum(a, b) {
  return a + b;
}
console.log(sum.toString());

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6-ES12是JavaScript的不同版本,每个版本都引入了新的特性和改进。以下是一些ES6到ES12的新特性的示例: ES6(2015年): 1. 箭头函数:简化了函数的语法。 2. 模板字面量:使用反引号(`)来创建多行字符串和插入变量。 3. 解构赋值:从对象或数组中提取值并赋给变量。 4. let和const:引入块级作用域的变量声明方式。 5. Promise:处理异步操作的更强大的方式。 ES7(2016年): 1. Array.prototype.includes():判断数组是否包含某个元素。 2. 指数操作符:使用双星号(**)进行指数运算。 ES8(2017年): 1. async/await:更简洁地处理异步操作。 2. Object.values()和Object.entries():从对象中提取值或键值对。 ES9(2018年): 1. Rest/Spread属性:通过...语法来处理函数参数和对象字面量。 2. Promise.prototype.finally():在Promise结束时执行操作。 ES10(2019年): 1. Array.prototype.flat()和Array.prototype.flatMap():用于处理嵌套数组的方法。 2. Object.fromEntries():将键值对列表转换为对象。 ES11(2020年): 1. 可选链操作符(Optional chaining):简化了访问深层嵌套属性的方式。 2. Nullish coalescing操作符:提供了一种默认值的设定方式。 ES12(2021年): 1. Promise.any():在多个Promise中返回最快解决的结果。 2. Logical Assignment Operators:提供了逻辑运算符与赋值的结合方式。 当然,以上仅是一些主要的新特性,ES6-ES12还有其他许多有用的功能和语法改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值