一、箭頭函數介紹javascript
//ES6
let fn=v=>v; console.log(fn("好酷的箭頭函數!"));//好酷的箭頭函數!
//ES5
let fn=function(v){ return v; } console.log(fn("好酷的箭頭函數!"));//好酷的箭頭函數!
二、寫法java
若是隻有一條語句,能夠將{}和return省略掉app
v=>v+v; //至關於 function (v){. return v+v; }
若是語句爲多條,則不能夠省略{}和return函數
v=>{ var sum=0; for(let i=0;i<v;i++){ sum+=i; } return sum; }
當沒有參數或有多個參數時,須要用括號()括起來:this
(num1,num2)=>num1+num2;
當省略{}和return時,若是返回的內容是一個對象,對象須要用括號()括起來spa
()=>({name:"laoliu"});
箭頭函數不能用於構造函數.net
//正常狀況 var Box=function(age){ this.myAge=age; } var obj=new Box(20); console.log(obj.myAge);//20 //箭頭函數 var Box=age=>{ this.myAge=age; } var obj=new Box(20);//Box is not a constructor console.log(obj.myAge);
箭頭函數沒有prototype屬性prototype
var Foo = () => {}; console.log(Foo.prototype); // undefined
箭頭函數不綁定arguments對象
var arguments = 42; var fn = () => arguments; console.log(fn()); // 42 function foo() { var f = (i) => arguments[0]+i; return f(2); } console.log(foo(1)); // 3
箭頭函數不綁定thisblog
window.color = "red"; //let 聲明的全局變量不具備全局屬性,即不能用window.訪問 let color = "green"; let obj = { color: "blue", getColor: () => { return this.color;//this指向window } }; let sayColor = () => { return this.color;//this指向window }; obj.getColor();//red sayColor();//red
箭頭函數沒法使用 call()或 apply()來改變其運行的做用域
window.color = "red"; let color = "green"; let obj = { color: "blue" }; let sayColor = () => { return this.color; }; sayColor.apply(obj);//red
參考文獻:https://blog.csdn.net/u012149969/article/details/80261081