返回顶部

【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遍历,但是也不是私有属性。

 

posted @ 2020-06-03 23:41  Will_D_Zhang  阅读(345)  评论(0编辑  收藏  举报