ES6随笔(重点)

  1. ES6新增块级作用域概念。let和const声明的变量和常量,只在所处的代码块内有效,外部访问打印 x is not defined.
    最典型的就是for循环中的变量声明,用var声明的话,i是全局变量,每一次循环i的值都增加,所以在循环内部打印的i就是全局变量i,所以i打印出来的就是最后一次i++完的值。let的块级概念完美的解决了这个问题。

  2. ES5 只有两种声明变量的方法:var命令和function命令。ES6 除了添加let和const命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。

  3. 顶层对象属性

  4. globalThis

  5. 数组的解构赋值

  6. 对象的解构赋值

  7. 字符串的正则方法 :
    字符串对象共有 4 个方法,可以使用正则表达式:match()、replace()、search()和split()。

  8. arguments对象不是数组,而是一个类似数组的对象。所以为了使用数组的方法,必须使用Array.prototype.slice.call先将其转为数组。

  9. 箭头函数有几个使用注意点
    (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

    (2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

    (3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

    (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。

箭头函数不适用场合:

 第一个场合是定义对象的方法,且该方法内部包括this。
 
 第二个场合是需要动态this的时候,也不应使用箭头函数。
  1. 尾调用----以及尾调用优化

  2. es6中规定严格模式下,普通函数中调用this指向undefined

  3. 数组的扩展

    1. 扩展运算符 … ,该运算符主要用于函数调用。该运算符将一个数组,变为参数序列。扩展运算符后面还可以放置表达式。如果扩展运算符后面是一个空数组,则不产生任何效果。只有函数调用时,扩展运算符才可以放在圆括号中,否则会报错。

    2. 扩展运算符替代函数的 apply 方法

    3. 应用 :
      ·复制数组 : const a2 = […a1]
      ·合并数组 :[…arr1,…arr2,…arr3]---->浅拷贝
      ·与解构赋值结合 : 如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。
      ·字符串 :扩展运算符还可以将字符串转为真正的数组。凡是涉及到操作四个字节的 Unicode 字符的函数,最好都用扩展运算符改写。

  4. 对es6中export、export default、import的理解

    1. 其中export和export default最大的区别就是export不限变量数 可以一直写,而export default 只输出一次 而且 export输出的变量想要使用必须使用{ }来盛放,而export default 不需要 只要import任意一个名字来接收对象即可。
    2. export default可以跟在非匿名函数之前,也可以跟在匿名函数之前,同时也可以是一个对象之前。
    3. import :
      import ‘**’ from 'vue’直接寻找的是依赖包里的文件
      如果import ‘**’ from ‘./vue’ 表示是同级文件下的js。

。。。未完待续

你可能感兴趣的:(es6,前端)