ES6新特性

64 阅读2分钟

es6 转换成es5的工具叫做babel

  1. var
    • 在ES5中,作用域一般分为全局作用域和局部作用域,在ES6中新增块级作用域,如条件语句,循环语句都是块级作用域,也可以理解为定义在{}内就是一个块级作用域,var中不存在块级作用域
    • var声明的变量存在变量提升,在搜索引擎在加载js的时候会先扫描一遍代码,将所有的var声明集合在一起,组成一个词法环境
  2. let
    • let只在块级作用域内生效
    • 不能重复声明
    • 不存在变量提升
    • 不会成为window的属性,在全局作用域中用let声明的变量 ,使用window变量名不会生效
    • 常用于解决var在声明技术的循环变量造成的变量泄露问题
  3. const
    • 用于声明一个常量,特性与let一样,只能在块级作用域中生效,不能重复声明,不存在变量提升,不会成为window的属性,但是一旦声明就不能在修改值
    • 如果声明基本数据类型,声明后是不能修改的,但是如果声明引用数据类型,则可以修改属性值
  4. let/const 和var的区别
    • 会进行预解析,let/const不会进行预解析,必须先定义后使用
    • 可以重复声明变量名,let/const不可以
    • var没有块级作用域,let/const 有块级作用域
    • var 只有函数私有作用域才能限制使用范围
    • let/const 只要是能书写代码的{}都能限制使用范围
  5. let 和const的区别
    • let叫做变量,const叫做常量
    • let 可以在声明的时候不进行赋值,const在声明的时候必须赋值
    • let 声明的变量可以修改,const声明的常量不能被修改,一旦被修改就报错