常用ES6新特性

144 阅读3分钟

常用ES6新特性

let、const

let(作用与var类似,用于声明变量)

  1. let 不能重复声明变量,var 可以重复声明变量;
  let name = "lanlan";
  let name = "lanlan";
  // 不可以重复定义
  // Uncaught SyntaxError: Identifier 'name' has already been declared
  1. 作用域:es6中引入了块级作用域,let声明的变量在块级作用域{}内有效
  for (let i = 0; i < 10; i++) {}
  console.log(i);
  //   index.html:53 Uncaught ReferenceError: i is not defined
  1. let声明的变量不存在var的变量提升问题
  2. let不能在定义之前访问该变量,并且不能被重新定义。
    let name="lanlan"
    // index.html:50 Uncaught ReferenceError: Cannot access 'name' before initialization

const

  1. const 变量必须在声明时赋值,但不能重新赋值
  // 错误写法
  const name;
  name = "lanlan";

  // 正确写法
  const name = "lanlan";
  1. 一旦声明,常量的值就不能改变。
  2. const 声明的变量如果是基本类型,那么不允许改变,如果是引用类型,那么只要不改变引用的地址就是可以的

解构赋值

数组解构

数组解构就是能快速提取数组中的指定成员(数组的某一项值或所有的值)

  1. 解构赋值都是一一对应的,按照顺序。
  const arr = ["haha", "hehe", "hoho"];
  let [res1, res2, res3] = arr;

  console.log("res1-----", res1); // haha
  console.log("res2-----", res2); // hehe
  console.log("res3-----", res3); // hoho
  1. 也可以取数组的某一项值(结构必须保持一致)
  const arr = ["haha", "hehe", "hoho"];
  const [, , name] = arr;
  console.log(name); // hoho

对象解构

对象解构和数组解构基本类似,只不过对象解构的取值方式是根据对象的属性名来取值

  const obj = {
    name: "lanlan",
    age: "25",
    sex: "女",
  };
  const { name, age, sex } = obj;
  //   console.log(name,age,sex); lanlan 25 女

模板字符串

(反引号)内容中可以直接出现换行符,’ '和" "中则不可以,出现会报错

    const name="张三";
    console.log(`我叫${name}`);  // 我叫张三

箭头函数

  1. 箭头函数 this 指向声明时所在作用域下 this 的值;
  2. 箭头函数不能作为构造函数实例化;
  3. 箭头函数不能使用arguments变量,但是可以使用....fun
  4. 函数体如果只有一条语句,则花括号可以省略,并省略return,函数的返回值为该条语句的执行结果;

总结

  1. var声明的变量是全局变量,会有变量提升的风险,尽量少用。
  2. let声明的变量具有块级作用域的特性,即只能在声明的代码块中使用,一定先声明之后才能使用。
  3. const声明的变量是常量,常量的值不允许更改,如果常量是引用类型,那么可以更改常量内部属性的值。
  4. 解构就是分解数据结构,赋值就是为变量赋值;在ES6中允许从对象和数组以及任何可以遍历的数据类型进行解构赋值。
  5. 箭头函数是将函数简化定义的一种方式,将箭头函数赋值给一个变量,变量名就是函数名称,通过调用变量名来调用函数。