es6-记录1

ES6

  1. let、var 、const的区别

    var let const
    块级作用域 无块级作用域 有块级作用域 有块级作用域
    变量提升 有变量提升 无变量提升 无变量提升
    暂时性死区 无暂时性死区 有暂时性死区 有暂时性死区
    值不可更改 值可更改 值可更改 值不可更改
    重复声明 能重复声明 不能重复声明 不能重复声明
    声明后必须赋值
    复杂数据类型 可以更改 可以更改 常量值对应的内存地址不可更改
    可以更改内部的值,但不可以重新赋值
    传值赋值和传址赋值
    1. 如果你存储的值不需要变化尽量使用const关键字,比如函数的定义,pi值,或者数学公式中一些恒定不变的值,

      因为使用const关键字声明的常量值不能变化,js解析引擎不需要时刻监控值得变化,所以效率高

  2. ES5、ES6是什么,有什么区别?

    1. ES5泛指上一代语言标准。ES6泛指下一代JS语言标准,包含ES2015、ES2016、ES2017、ES2018等。
  3. ES5、ES6时间分界线是那一年?

    1. 2015年
  4. babel是什么,有什么作用,在webpack中怎么使用?

    1. Babel是一个JavaScript编译器,可以将ES6代码转为ES5代码,使在目前不支持ES6浏览器上执行ES6代码。
  5. const声明的变量一定不能修改吗?

    1. const实际上保证的并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。

      对于基本类型的数据(Undefined、Null、Boolean、Number、String和Symbol〉而言,值就保存在变量指向的内存地址中,因 此等同于常量。

      但对于引用类型的数据(主要是对象和数组)而言,变量指向的内存地址,其保存的只是个指针,指针指向堆内存中的数据。

      const只能保证这个指针是固定的,至于它指向的数据是可以被修改的。

    2. const foo = {};
      //为foo加一个属性,可以成功
      foo.prop = 123;
      //将foo指向另一个对象,就会报错
      foo = { prop : 123 }; //TypeError fo is read-only 
      
  6. 什么是块级作用域

    1. 是一个语句,将多个操作封装在一起,通常是放在一个大括号里,没有返回值
  7. 解构赋值

    1. 解构代表分解数据结构,赋值代表为变量赋值

    2. 允许按照一一对应的方式,从数组或者对象中提取值,再赋值给变量

    3. 数组解构

      1. 左边的中括号不是数组,代表数组解构
      2. 嵌套解构赋值
      3. 不完全解构,解构不成功,变量的值为undefined
      4. 允许左侧的解构变量设置默认值,但会被右边的值覆盖
    4. 对象解构

      1. 左边的中括号不是对象,代表对象解构
      2. 左侧解构的变量名字匹配右侧对象的属性
      3. 另一种写法,左侧解构的属性匹配右侧对象的属性,然后赋值给变量
    5. 字符串结构赋值

      let [a, b, c, d] = 'test';
      console.log(a)//t
      console.log(b)//e
      console.log(c)//s
      console.log(d)//t
      let { length } = 'test';
      console.log(length)//4
      
  8. 箭头函数

    1. 语法 ()=>{}
    2. const fn= ()=>{},如何调用呢?将箭头函数赋值给一个变量,变量名字就是函数名字,通过变量名字调用函数即可
    3. 函数体中只有一句代码,单吗的执行结果就是返回值,可以省略大括号
    4. 如果形参只有一个,可以省略小括号
    5. 箭头函数不绑定this,箭头函数中的this,指向的是 函数定义位置的上下文中的this

4.剩余参数

5.扩展运算符

6.数组的扩展方法

posted @ 2021-05-24 22:29  有风吹过的地方丨  阅读(44)  评论(0编辑  收藏  举报