美文网首页
ES6 新特性

ES6 新特性

作者: 张_何 | 来源:发表于2023-01-10 14:29 被阅读0次
    • ES6 在2015年6月正式发布, 2015年6月之后发布的ES版本,包括ES7,ES8,ES9统称ES6
    • ES6 中创建类使用的是class, ES6之前使用的是构造函数
    • ES6 新特性
      • 1.let 和 const 命令
      • 2.es6的模版字符串
      • 3.增强函数
      • 4.扩展的字符串,对象,数组功能
      • 5.解构赋值
      • 6.Symbol
      • 7.Map和Set
      • 8.迭代器和生成器
      • 9.Promise对象
      • 10.Proxy 对象
      • 11.async 的用法
      • 12.类class
      • 13.模块化实现

    let 和 const

    • 使用var定义的变量会有变量提升问题, var 在同一个作用于可以重复声明同名的变量,后声明的会覆盖之前声明的
    • 使用let 定义的变量就没有变量提升问题, let 也不能重复声明重名的变量, let 声明的变量不会污染全局变量
    • const 声明的是常量,一旦声明后就不能再修改, const 声明的常量也没有变量提升,也不能重复声明
    • 解决的问题:
    const arr = [];
    for (var i= 0; i < 10; i++) {
      arr[i]=function(){
        return i;
      }
    }
    console.log(arr[5]()); // 10, 这里是因为var 定义的i会提升到for循环外,当for循环执行完后 i 就变成了10; 如果使用let 定义就不会提升到for循环外,输出的结果就是5
    
    • ES6 函数你支持参数默认值
    • ES6 支持剩余参数, 由三个点...和一个紧跟着的具名参数指定, 比如 function pick(obj, ...keys) { }
    • 剩余运算符... , 把多个独立的参数合并到一个数组中
    • 扩展运算符...,将一个数组分割,并将各个项作为分离的参数传递给函数
    • 箭头函数没有this指向,只能通过查找作用域链来确认
    • Object.is(参数1,参数2) 方法比较两个数据是否严格相等, 即比较值,又比较数据类型, 解决了=== 不严谨的问题
    • Object.assign(target, obj1,obj2,...); 将后面的对象的属性合并到target上,冲突的属性覆盖解决
    • 用Symbol声明的值是独一无二的,可以用来解决命名冲突,而且使用Symbol定义的属性只能通过[]访问,不能通过.访问,也不能通过属性的遍历获取到
    const name = Symbol('name');
    const name1 = Symbol('name');
    console.log(name===name2); // false
    
    • Set中引用的对象无法释放(强引用), 使用WeakSet引用的对象可以释放(弱引用),WeakSet不能传入非对象类型的参数,不可以迭代,没有forEach,没有size属性
    • generator 函数,可以通过yield关键字,将函数挂起,为了改变执行流提供了可能性,同时为异步编程提供了方案, 与普通函数有如下区别:
      • function后面 函数名之前有个*
      • 只能在函数内部使用yield表达式,让函数挂起
      • generator 函数是分段执行的,yield语句是暂停执行,而next()恢复执行
    function* func(){
      console.log('one');
      yield 2;
      console.log('two');
      yield 3;
      console.log('end');
    }
    let fn = func();
    console.log(fn.next()); // one, {value: 2,done:false} , 挂起在yield 2的位置,并将2作为value返回
    console.log(fn.next()); // two, {value: 3,done:false} , 挂起在yield 3的位置,并将3作
    console.log(fn.next());// three,{value:undefine, done:true} 
    

    相关文章

      网友评论

          本文标题:ES6 新特性

          本文链接:https://www.haomeiwen.com/subject/kqdvcdtx.html