zoukankan      html  css  js  c++  java
  • 【ES6】知识点汇总--1>10

    1.ES6是什么,为什么要学习它

    es6是新一代的语言标准,es6规范了js使用标准,新增了js原生方法,更适合大型应用开发。

    2.ES5、ES6和ES2015有什么区别

    ES2015特指2015年发布的新一代js语言标准,而ES6特指下一代语言标准,目前等同于ES2015,ES5泛指上一代语言标准。

    3.babel是什么,有什么作用

    babel是一个ES6转码器,可以把ES6代码转化成ES5代码,以便兼容尚未支持ES5的项目

    4.var,let,const之间的区别

    ES5没有块级作用域的概念

    ES6新增块级作用域的概念

    变量提升:在使用var申明变量的时候,会提到当前作用域的顶端,而赋值操作位置不变

    var仅在function是局部变量,其他情况下是全局变量,存在变量提升 -- 局部变量

    let一直充当局部变量,及时在if中外界也不能调用,不存在变量提升 -- 局部变量

    const必须初始化,而且不能更改 , 不存在变量提升 -- 常量

    var可以重复申明,let不可以

    5.ES6对String字符串类型常用升级优化

    ---优化---
      新增字符串模板,在拼接大段字符串时,用反斜杠取代以往的字符串相加,可以保留空格和换行,使字符串看起来更美观 ---升级---
      ES6在String原型上新增了includes()方法,取代传统 index of 查找包含字符串的方法,includes() 返回false,语义更加明确
      此外还新增了startsWith(), endsWith(), padStart(),padEnd(),repeat()等方法,可方便的用于查找,补全字符串

    6.ES6对Array数组类型常用升级优化

    ---优化---
      1.数组结构赋值,let [a,b,c] = [1,2,3]
      2.扩展运算符 ... 轻松实现数组和松散序列的转换,可以取代arguments对象和apply方法,轻松获取未知参数个数情况下的参数集合,例如:let a = [2,3,4]; let b = [...a]
    ---升级---
      新增了find()方法,取代传统的只能用indexOf查找包含数组项目的方法,修复了indexOf查找不到NaN的bug([NaN].indexOf(NaN) === -1)
      新增了copyWithin(), includes(), fill(),flat()等方法

    7.ES6对Number数字类型常用升级优化

    ---优化---
    ES6在Number原型上新增了isFinite(), isNaN()方法,用来取代传统的全局isFinite(), isNaN()方法检测数值是否有限、是否是NaN ---升级---
    ES6在Math对象上新增了Math.cbrt(),trunc(),hypot()等等较多的科学计数法运算方法,可以更加全面的进行立方根、求和立方根等等科学计算。

    8.ES6对object类型常用升级优化

    ---优化---
      1.对象属性变量式声明。ES6
    可以直接以变量形式声明对象属性或者方法
        let [apple, orange] = ['red appe', 'yellow orange'];
        let myFruits = {apple, orange}; // let myFruits = {apple: 'red appe', orange: 'yellow orange'};
      2.对象解构赋值。
       let {apple, orange} = {apple: 'red appe', orange: 'yellow orange'};
       3.对象的扩展运算符 ...
        可以轻松的取出一个目标对象内部全部或者部分的可遍历属性,从而进行对象的合并和分解
     
       4.super关键字。
        ES6在Class类里新增了类似this的关键字super。同this总是指向当前函数所在的对象不同,super关键字总是指向当前函数所在对象的原型对象。
    ---升级---
      1.ES6在Object原型上新增了is()方法,做两个目标对象的相等比较,用来完善'==='方法。'==='方法中NaN === NaN //false其实是不合理的
      2.ES6在Object原型上新增了assign()方法,用于对象新增属性或者多个对象合并。
      3.ES6在Object原型上新增了getOwnPropertyDescriptors()方法,此方法增强了ES5中getOwnPropertyDescriptor()方法,
        可以获取指定对象所有自身属性的描述对象。结合defineProperties()方法,可以完美复制对象,包括复制get和set属性。
      4.ES6在Object原型上新增了getPrototypeOf()和setPrototypeOf()方法,用来获取或设置当前对象的prototype对象
        ES6在Object原型上还新增了Object.keys(),Object.values(),Object.entries()方法,用来获取对象的所有键、所有值和所有键值对数组

    9.ES6对function函数类型常用升级优化

      

    ---优化---
      箭头函数
      
    1.箭头函数内的this指向的是函数定义时所在的对象,而不是函数执行时所在的对象
      2.
    箭头函数不能用作构造函数,因为它没有自己的this,无法实例化
      3.也是因为箭头函数没有自己的this,所以箭头函数 内也不存在arguments对象。

      函数默认赋值
      function es6Fuc (x, y = 'default') {
          console.log(x, y);
      }
      es6Fuc(4) // 4, default

    ---升级---
      ES6新增了双冒号运算符,用来取代以往的bind,call,和apply。
      foo::bar;
        // 等同于
      bar.bind(foo);
     
      foo::bar(...arguments);
        // 等同于
      bar.apply(foo, arguments);

    10.Symbol是什么,有什么作用

    Symbol是ES6引入的第七种原始数据类型,所有Symbol()生成的值都是独一无二的,可以从根本上解决对象属性太多导致属性名冲突覆盖的问题。

    对象中Symbol()属性不能被for...in遍历,但是也不是私有属性。

  • 相关阅读:
    HDU 4814 Golden Radio Base
    我对Swift的几点疑问
    【UTR #1】ydc的大树
    jsp中的隐含9对象
    动作元素
    指令元素
    JSP语法
    设计模式六大原则(6):开闭原则
    设计模式六大原则(5):迪米特法则
    设计模式六大原则(4):接口隔离原则
  • 原文地址:https://www.cnblogs.com/bk770466199/p/13040847.html
Copyright © 2011-2022 走看看