我试图了解 es6 的新箭头函数语法以及它与我已经知道的内容的关系。
我的理解是箭头函数有
- 无名
- 无参数对象
- 没有能力成为发电机
- 词法 this
只要您不使用参数对象认为它是用于箭头并且不将箭头用作生成器,那么以下概念是否正确
function () {}.bind(this); // synonym for () => {}; given the contraints above ???
我的主要问题是。我是否缺少有关箭头功能的基本知识?
我试图了解 es6 的新箭头函数语法以及它与我已经知道的内容的关系。
我的理解是箭头函数有
只要您不使用参数对象认为它是用于箭头并且不将箭头用作生成器,那么以下概念是否正确
function () {}.bind(this); // synonym for () => {}; given the contraints above ???
我的主要问题是。我是否缺少有关箭头功能的基本知识?
这基本上是正确的,但是说箭头函数有“没有”参数对象可能太令人困惑了,因为这可能意味着它是未定义的。他们不做的是在自己内部或为自己重新定义该关键字,因此它保持定义为它已经在词法范围内的任何内容:
(function test(){
let test2 = () => console.log(this,arguments);
test2();
}).bind({heya:true})(4,5);
这将记录:“{heya: true}, [4, 5]”; 为什么?因为 arguments 对象和 this 上下文在 Arrow 函数体内保持不变:外部/词法上下文没有改变 。
此外,虽然箭头函数本身没有定义 function.name 意义上的名称,但您当然可以将其分配给一个名称,然后在箭头函数的主体中使用该名称,就像这个柯里化函数一样:
var curry = (f, ...args) => {
if (f.length <= args.length){
return f(...args);
}
return (...more) => curry(f, ...args, ...more);
};