对箭头功能的理解es6

Understanding of arrow functions es6

本文关键字:es6 功能      更新时间:2023-09-26

我正在努力理解es6的新箭头函数语法,以及它与我所知道的内容之间的关系。

我的理解是箭头功能有

  • 没有名字
  • 无参数对象
  • 没有发电机的能力
  • 词汇这个

那么,只要你不使用arguments对象,认为它是用于箭头的,并且不使用箭头作为生成器,以下概念正确吗

function () {}.bind(this); // synonym for () => {}; given the contraints above ???

我的主要问题是。我是否遗漏了箭头函数的一些基本内容

这基本上是正确的,但说Arrow函数有"no"arguments对象可能太令人困惑了,因为这可能意味着它是未定义的。他们不做的是在自己内部或为自己重新定义该关键字,因此它保持定义为词汇范围中已经存在的任何关键字:

(function test(){
   let test2 = () => console.log(this,arguments);
   test2();
}).bind({heya:true})(4,5);

这将记录:"{heya:true},[4,5]";为什么?因为arguments对象和this上下文在Arrow函数的内部保持不变:外部/词法上下文没有改变。

此外,虽然Arrow函数本身没有定义函数名称,但您可以将其指定给一个名称,然后在Arrow函数的主体中使用该名称,就像这个currying函数一样:

var curry = (f, ...args) => {
  if (f.length <= args.length){
    return f(...args);
  }
  return (...more) => curry(f, ...args, ...more);
};