ES6新特性学习

一、前言

  近半个月找工作一来,都会经常被问到es6新增特性的问题,例如箭头函数、模板等等,在以前刚接触es6的新语法是,也是只是知道大概知道怎么用而已,也没有深入的去理解背后的含义。所以挺吃亏的,后面了解了一下,es6终归属于新语法,还是有存在浏览器兼容的问题,一般的话在框架里面是有比较多一点。在学习es6之前,得先了解一下何为es6:es6全称是ECMAScript 6.0,是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

二、知识点

1. const 和 let

const 定义的是常量,也就是不可改变值的变量,像是在node.js里面获取到某一个模块,最好就是使用const定义为常量,如下面例子,获取到路径模块

const path = require("path");

let 用于定义局部变量,只在定义改变量所在的代码块内有效,与var不相同的是,使用var声明的变量可以在全局范围内访问到这个变量,最简单的例子就是for循环。

var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); 

  在这个例子中,输出来的数字是 10,如果说当循环体的 i 变量是用let定义的话,那结果就不一样了,就是6。也就是说,变量ilet声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。另外,使用let定义的变量,是不存在变量提升的,也就是说不能先使用变量再定义,这是会保存的。

2.箭头函数

ES6允许使用“箭头”(=>)定义函数。

var f = v => v

上面语法等同于

var f = function (v) {
  return v  
}

如果当箭头函数不需要参数或者多个参数时,可以用()

var f = () => {
    return 5
}     

使用箭头函数需要注意的点:

(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象,原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this

(2)不可以当作构造函数,也就是说,不可以使用new命令,因为它没有this,所以也就不能用作构造函数。

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

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

箭头函数与常规的函数不同的地方:

不能被用作构造函数:没有内部方法 [[Construct]] (该方法允许普通的函数通过 new 调用),也没有 prototype 属性。因此, new (() => {}) 会抛出错误。

三、

除此之外还有module、export、import、class等新增内容,Javascript越来越接近面向对象的语言。

猜你喜欢

转载自www.cnblogs.com/jiang-z/p/9244327.html