Javascript 了解arrow函数es6
我试图理解es6新的arrow函数语法,以及它与我已经知道的内容的关系 我的理解是箭头函数具有Javascript 了解arrow函数es6,javascript,function,ecmascript-6,lexical,arrow-functions,Javascript,Function,Ecmascript 6,Lexical,Arrow Functions,我试图理解es6新的arrow函数语法,以及它与我已经知道的内容的关系 我的理解是箭头函数具有 没有名字 无参数对象 没有成为发电机的能力 词汇这个 那么,只要您不使用arguments对象,并且认为它是针对箭头的,并且不使用箭头作为生成器,那么下面的概念正确吗 function () {}.bind(this); // synonym for () => {}; given the contraints above ??? 我的主要问题是。我是否遗漏了有关箭头函数的一些基本信息?这
- 没有名字
- 无参数对象
- 没有成为发电机的能力
- 词汇这个
function () {}.bind(this); // synonym for () => {}; given the contraints above ???
我的主要问题是。我是否遗漏了有关箭头函数的一些基本信息?这基本正确,但如果说箭头函数有“no”arguments对象,可能太令人困惑了,因为这可能意味着它是未定义的。他们不做的是在自己内部或为自己重新定义该关键字,因此它保持定义为词法范围中已经存在的任何关键字:
(function test(){
let test2 = () => console.log(this,arguments);
test2();
}).bind({heya:true})(4,5);
这将记录:“{heya:true},[4,5]”;为什么?因为arguments对象和this上下文在Arrow函数体内保持不变:外部/词汇上下文不变
此外,虽然Arrow函数本身没有定义function.name意义上的名称,但您当然可以将其指定给一个名称,然后在Arrow函数体中使用该名称,与此currying函数一样:
var curry = (f, ...args) => {
if (f.length <= args.length){
return f(...args);
}
return (...more) => curry(f, ...args, ...more);
};
var curry=(f,…args)=>{
如果(f.长度咖喱(f,…args,…更多);
};
“不能成为迭代器”这意味着什么?函数从来都不是迭代器。你是指构造函数吗?@FelixKling抱歉,我指的是生成器。我会更新这个问题。你说它们没有名字是什么意思?你可以这样做:f=(a,b,c)=>a+b+c
@Cristy我的意思是函数本身是一个未命名的函数。f是引用箭头的标识符。f不是箭头的名称。@t3dodson如果这是你的问题,那么就不是。你也不能新建
箭头函数。在ES6中,这会引发错误。