es6新增特性

es6新增特性

1. let关键字

那么let声明和var声明变量有什么异同呢?

  • 全局作用域下: 两者在全局作用域下作用相似,但是,let声明的变量不会作为全局对象window的属性,而var声明的变量却可以

    var numvar = 10;

    let numlet = 100;

    console.log(window.numvar);//10

    console.log(window.numlet);//undefined

  • 块作用域下:let声明的变量只在所处的块级({}之间)有效。

  • 变量提升: let声明的变量不存在变量提升,故必须先声明再使用

  • 变量重名: var允许再同一作用域声明同名的变量,只不过就是会把值覆盖而已;let则不允许在同一作用域声明同名的变量。

  • 暂时性死区: let声明的变量存在暂时性死区

    var num = 10;

    if(true) {

    ​ console.log(num);// 这里程序会把num和块级绑定,认为在打印let声明的num

    ​ let num;

    }

2. const关键字

const关键字声明变量的特点如下:

  • 具有块级作用域
  • 声明的同时必须赋值
  • 常量赋值后是不能修改的

sum: let, var, const的区别

let, var, const


3. 解构赋值

解构-赋值:按照一定的模式,从数组或者对象中提取值并赋值给另外的变量。

3.1 数组解构

允许按照一一对应的关系从数组中提取值并赋值给变量

如果变量数量 > 数组元素数量,则后面的变量则为undefined

如果变量数量 < 数组元素数量, 则按照数组的前n个分别赋值

3.2 对象解构

  • 方法一: 按照属性名一一对应赋值

    let {attr1, attr2} = {

    ​ attr1: xxx,

    ​ attr2: xxx}

    但是这个解构赋值的方法变量名必须和对象里的属性名一致

  • 方法二: 自定义变量名

    let {attr1: name1, attr2: name2} = {

    ​ attr1: xxx,

    ​ attr2: xxx}

    冒号前做属性匹配,冒号后才是真正的变量名

4. 箭头函数

通常需要将箭头函数赋值给某个变量,方便调用。

var fn = (arg1, …) => {xxxx}

箭头函数的特点:

  • 如果函数体只有一句代码,且代码的执行结果就是返回值,则可以直接省略大括号
  • 如果形参只有一个,则可以省略小括号
  • 箭头函数不绑定this, 箭头函数中的this是函数定义位置的上下文this

5. 剩余参数...args

剩余参数允许将不定数量的参数表示为一个数组

6. ES6内置对象扩展

6.1 Array扩展方法

  • 扩展运算符…:将数组或者对象拆分成用逗号分隔的参数序列

    let arr = [1,2,3]

    …arr // 1, 2, 3

    应用:拓展运算符可以很好的帮助我们合并数组将伪数组或者可遍历对象转换成真正的数组

  • 构造函数法Array.from(): 可以将伪数组或者可遍历对象转换成真正的数组

  • find():用于找出第一个符合条件的数组成员,找不到返回undefined

  • findIndex(): 找出第一个符合条件的数组成员的位置,找不到返回-1

  • includes() : 判断数组是否包含给定的值,返回布尔值

6.2 String扩展方法

  • 模板字符串``: 和普通的字符串比,可以解析变量,可以换行,可以调用函数!!!!注意解析变量和调用函数需要用 ${}包裹
  • str.startsWith(subStr) 和 str.endsWith(subStr) 判断str字符串是否以subStr开头或者结尾,返回true或者false
  • str.repeat(): 将字符串重复n次,返回新的字符串

6.3 Set数据结构

Set数据结构是es6中提出的,类似于数组,但是与数组不同的是,Set中的成员都是唯一的

const s = new Set([1,2,3,3]); // s = [1,2,3]

应用

  • 搭配扩展运算符进行数组去重

    var arr = [1,3,3,3,3,5]

    var set = new Set(arr); //去重

    var arrNew = […set]; //用扩展运算符包装成新的数组

  1. set实例的方法

    a. add(value): 添加某个值,返回set结构本身

    b. delete(value):删除某个值,返回布尔值,表示删除成功与否

    c. has(value): 返回布尔值,判断是否有这个成员

    d. clear():清除所有成员


es6新增特性
http://example.com/2023/06/21/es6新增特性/
Author
John Doe
Posted on
June 21, 2023
Licensed under