箭頭函數(shù),就是對(duì)函數(shù)進(jìn)行簡化操作,基本寫法
=>
=> 就是當(dāng)你只需要一個(gè)只有一個(gè)參數(shù)的簡單函數(shù)時(shí),可以使用新標(biāo)準(zhǔn)中的箭頭函數(shù),它的語法非常簡單:標(biāo)識(shí)符=>表達(dá)式。你無需輸入function和return,一些小括號(hào)、大括號(hào)以及分號(hào)也可以省略。
function show(x){
console.log(x)
};
show(4);
var fun = y => y;
console.log(fun(5));

() 多參數(shù)的處理
如果要寫一個(gè)接受多重參數(shù)(也可能沒有參數(shù),或者是不定參數(shù)、默認(rèn)參數(shù)、參數(shù)解構(gòu))的函數(shù),你需要用小括號(hào)包裹參數(shù) list
一個(gè)參數(shù)的情況下你可以不用小括號(hào) var fun = y => y; 這樣直接寫,兩個(gè)參數(shù)或者有更多的參數(shù)的時(shí)候就必要用小括號(hào)把參數(shù)包裹進(jìn)去。
var fun = (x,y)=> x+y;
console.log(fun(7,9));

{} 函數(shù)體多內(nèi)容的處理
復(fù)雜一些就好比這樣
var fun = (x,y)=>{
x=x*y;
y=y*x;
return x+y;
};
console.log(fun(7,9));

這時(shí)我們需要把復(fù)雜的計(jì)算過程寫到大括號(hào)里,如果不寫大括號(hào)就意味著直接就是寫入
return 了,所以需要寫入到大括號(hào)里。
回調(diào)寫法
回調(diào)函數(shù),匿名函數(shù)也是可以用箭頭函數(shù)來寫的。
setTimeout(()=>{
console.log(123);
},1000);

怎么說呢,箭頭函數(shù)也可以這樣理解就是把函數(shù)中的
function 給省略了。
注意點(diǎn)
箭頭函數(shù)我們還需要注意一些細(xì)節(jié)。
this 指向的問題
在函數(shù)中 this 指向是很容易搞混淆的。我們?cè)谧雒嫦驅(qū)ο?,事件的時(shí)候,會(huì)弄混的。這個(gè) this 指向的問題我單獨(dú)開一個(gè)新的文章來寫。
不可以當(dāng)做構(gòu)造函數(shù)
這里有這樣的一個(gè)構(gòu)造函數(shù)
var A = function(){
this.a=10;
};
var A1 = new A();
console.log(A1.a);

這是一個(gè)簡單的構(gòu)造函數(shù),這時(shí)候如果用 => 來代替了 function 以后會(huì)出現(xiàn)什么情況
var A = () =>{
this.a=10;
};
var A1 = new A();
console.log(A1.a);

可以看出箭頭函數(shù)是不可以做構(gòu)造函數(shù)的。
不可以使用 arguments
形式參數(shù) arguments 是不能在箭頭函數(shù)中使用的
var fun = function(){
console.log(arguments[4]+arguments[3]);
};
fun(1,2,3,4,5);

但是如果用 箭頭函數(shù)就會(huì)報(bào)錯(cuò)
var fun = ()=>{
console.log(arguments[4]+arguments[3]);
};
fun(1,2,3,4,5);

Uncaught ReferenceError: arguments is not defined 說沒有找到,沒有定義。
不可以用在 Generator 函數(shù)中。
Generator 這個(gè)函數(shù)就是生成器,是為了解決異步操作。這個(gè)點(diǎn)也是比較多,我們單獨(dú)寫一個(gè)博客。
以上的四點(diǎn)是需要注意的地方。