NodeJS中常规函数和箭头函数有什么区别?

时间:2017-07-01 12:53:01

标签: node.js arrow-functions

我使用视频教程学习节点js。我没有得到箭头功能。常规功能和箭头功能之间的主要区别是什么? enter image description here

2 个答案:

答案 0 :(得分:2)

  1. Lexical this and arguments 箭头功能没有自己的这个或 参数绑定。相反,这些标识符在词法范围内像任何其他变量一样被解析。这意味着在一个箭头函数中,这个和参数引用了这个和环境中的参数的值,箭头函数定义在

  2. 无法使用new调用箭头函数 ES2015区分可调用的函数和函数 构建能够。如果函数是可构造的,则可以使用new调用它,即new User()。如果函数是可调用的,则可以不调用它 新的(即正常函数调用)。 通过函数声明/表达式创建的函数既可构造又可调用。 箭头函数(和方法)只能调用。类构造函数只能构造。 如果您尝试调用不可调用的函数或构造不可构造的函数,则会出现运行时错误。

答案 1 :(得分:2)

箭头函数是一种更简洁的函数编写方式,在ES6中引入。 箭头函数是匿名函数,这意味着您无法命名它。

示例1:

  var addRegular = function(x, y)  { return x + y };
  var addArrow = (x, y) =>  x + y;

箭头函数不绑定到它,它们不会创建它们自己的,因此封闭它就可以使用了。

示例2:

//1. regular function, creates own scope 
function Counter() {
  //set count to 0
  this.count = 0;
  var setOne  = function () {
    this.count = 1;
  };
  setOne(); 
}
var c = new Counter();
console.log(c.count);// outer count will stay unchanged.

//2. arrow function, uses outer this
function Counter() {
  this.count = 0;
  var setTwo = () => {this.count = 2};
  setTwo();
}
var c = new Counter();
console.log(c.count);//will be equal 2.

箭头函数有一个隐式返回值,这意味着不需要写返回,这使得这些函数成为单行,如上例所示。