javascript - 箭头函数的理解es6

标签 javascript function ecmascript-6 lexical arrow-functions

我正在尝试理解 es6 的新箭头函数语法以及它与我已经知道的内容之间的关系。

我的理解是箭头函数有

  • 没有名字
  • 没有参数对象
  • 没有发电机的能力
  • 词法this

只要您不使用参数对象并认为它是用于箭头并且不使用箭头作为生成器,那么以下概念是否正确

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

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

最佳答案

这基本上是正确的,但是说 Arrow 函数“没有”参数对象可能会让人感到困惑,因为这可能意味着它是未定义的。他们不做的是重新定义他们自己或他们自己的那个关键字,所以它仍然被定义为它已经在词法范围内的任何东西:

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

那将记录:“{heya: true}, [4, 5]”;为什么?因为 arguments 对象和 this 上下文只是在 Arrow 函数体内保持相同:外部/词法上下文没有改变。

此外,虽然箭头函数本身没有定义 function.name 意义上的名称,但您当然可以将其分配给一个名称,然后在箭头函数的主体中使用该名称,就像这样柯里化(Currying)函数:

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

关于javascript - 箭头函数的理解es6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34698155/

相关文章:

javascript - 用小数编写你自己的指数幂函数

python - 艰苦学习Python练习20行号

performance - 将大量常量和工作区变量传递给 fsolve 目标函数的最佳方法是什么?

javascript - ES6 模块 : Export single class of static methods OR multiple individual methods

javascript - 如何根据纯 Javascript 中的区域设置确定一周是从星期一还是星期日开始?

javascript - 查找大于或等于 2014 的正则表达式

javascript - 将 JavaScript 代码转换为 React 组件类格式

javascript - 将 for 循环内容移动到函数中

javascript - 选择某些值并在 ES6 中按字母顺序排序

javascript - 如何在 JavaScript 中清空数组?