var obj = { a:10, b:function(n){ var f = (v)=> v + this.a var c = {a:20}; return f.call(c,n) } } console.log(obj.b(1)) //11
3、不可以当作构造函数,也就是说,不可以new命令,否则会抛出一个错误。
1 2 3 4
let Fun =()=>{ console.log('111') } let f = new Fun() //TypeError:Fun is not a constructor
4、不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用rest参数代替。
1 2 3 4 5 6 7 8 9 10 11 12 13
functionA(){ console.log(arguments) } var B = (b) => { console.log(arguments) } let C = (...c) => { //..c即为rest的参数 console.log(c) } A(2) //Arguments[2, callee: ƒ, Symbol(Symbol.iterator): ƒ] B(2) //ReferenceError:arguments is not defined C(2) //[2]
5、不可以使用yield命令,因此箭头函数不能用做Generator函数。
6、箭头函数没有原型属性
1 2 3 4 5 6 7 8
var a = () => { return1 } functionb(){ return2; } console.log(a.prototype) //undefined console.log(b.prototype) // {constructor:f}
7、箭头函数不能换行
1 2
var a = () =>1; //SyntaxError:Unexpectede token =>
箭头函数后面的大括号
注意:
箭头函数后面不加大括号,默认只能有一行代码,默认return;
箭头函数后面加大括号,默认没有return
1 2 3 4 5 6 7 8 9
let res1 = (r1,r2) => r1+r2; let res2 = (r1,r2) => {r1+r2}; let res3 = (r1,r2) => {return (r1+r2)} let r1 = res1(1,2) let r2 = res2(1,2) let r3 = res3(1,2) console.log(r1) //3 console.log(r2) //undefined console.log(r3) //3