2024-05-10 ES6新特性小总结
- ES6,即ECMAScript 2015,js的一个重量级版本,相较于ES5,它更新了一些新特性以及语法。
- let和const关键字:用于声明变量。
- let:定义块级局部变量。
- const:定义常量,注意:如果是定义对象或数组,那么该对象或数组中的值可被改变,但引用不能改变。
- 箭头函数:提供了一种更简洁的函数声明语法,并且没有自己的
this
、arguments
、super
或new.target
。 - 带参数一般写法:const a = (a) => console.log(b);
- 没有参数写法可省略参数括号:const a = b => console.log(b);
- 带函数体写法:const a = () => { console.log(1 + 1); }
- 解构赋值:允许从数组或对象中提取值,并赋值给不同的变量。
- const arr = {a: 1,b:2}; const {a,b} = arr; console.log(a);
- 模板字符串:使用反引号(``)来定义字符串,可以在其中嵌入表达式。
- const a = 7; console.log(`123456${a}`);
- 展开运算符(...):可以在函数调用、数组字面量和对象字面量中展开数组或对象。
- 复制数组,用它复制数组可避免浅拷贝的问题,用法为const arr = [1,2,3];const arr2 = [...arr];这样就能的到新的复制arr内容的数组arr2
- 合并两个数组:const arr1 = [1]; const arr2 = [2]; const arr3 = [...arr1,arr2]; console.log(arr3); // [1,2,3];
- 注意!展开运算符仅适用于单层引用数据类型结构,当你用这种方式去期望深拷贝数据时是无法拷贝数据的全部内容,仅能拷贝内容的引用地址,也就是说会污染源数据
- Symbol类型:新增的一种原始数据类型,用于创建唯一且不可变的标识符。
- 一种特殊不可变的数据类型,即便值是一样的,但还是不相等的,表示唯一标识。
- 例:const a = Symbol("一");const b = Symbol("一");console.log(a === b); // false
- 用作对象的key,避免键冲突
- Map和Set数据结构:Map是键值对的集合,键可以是任何类型;Set是值的集合,且值唯一;二者是两种数据结构。
- Map 对象保存键值对,并且任何值(对象或原始值)都可以作为键或值。
- Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
- Proxy对象:用于定义基本操作的自定义行为,如属性查找、赋值、枚举、函数调用等。
- Reflect对象:提供与对象交互的方法,如定义、检查、修改对象属性等。
- 模块化:引入
import
和export
关键字,支持ES6模块的导入和导出。 - 类(class):基于原型的继承的语法糖,提供了更接近传统面向对象编程的语法。
- Promise对象:用于处理异步操作,提供了一种更简洁的链式调用方法。
- async/await:基于Promise的异步编程语法糖,使异步代码看起来更像同步代码。
- 生成器(Generator):函数的一种特殊类型,可以暂停和恢复其执行。
- 迭代器(Iterator):使对象能够按一定顺序访问其各个元素。
- 默认参数:允许在函数定义时设置参数的默认值。
- 剩余参数(Rest parameters):使用
...
语法表示一个函数可以接收任意数量的参数。 - 扩展运算符(Spread Operator)与剩余参数(Rest Operator):两者在语法上都是
...
,但用途不同。扩展运算符用于展开数组或对象的元素,而剩余参数用于收集函数参数。 - const arr = [1,2,3,4]; const newArr = [...arr,5]; // [1,2,3,4,5]
- Array.from()方法:将类数组对象或可迭代对象转换为真正的数组。
- Object.assign()方法:将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步