ES6新特性-函式的簡寫(箭頭函式)
阿新 • • 發佈:2018-12-03
作者:just4you
來源:CSDN
原文:https://blog.csdn.net/just4you/article/details/79258799 (感謝分享)
通常函式的定義方法
var fn = function(...){
......
}
//例如:
var add = function(a,b){
return a+b;
}
//或者:
function fn(...){
......
}
//例如:
function add(a,b){
return a+b;
}
簡寫方法速記
將原函式的“function”關鍵字和函式名都刪掉,並使用“=>”連線引數列表和函式體。
function add(a,b){
return a+b;
}
//簡寫為:
(a,b)=>{//刪掉了function和函式名
return a+b;
}
var add = function(a,b){
return a+b;
}
//簡寫為:
var add = (a,b)=>{ //刪掉了function
return a+b;
}
附加規則
當函式引數只有一個時,括號可以省略;但是沒有引數時,括號不可以省略。
函式體(中括號)中有且只有一行return語句時,中括號及return 關鍵字可以省略。
新舊函式定義的對比
無引數函式
let fn = function(){
return 'helloWorld';
}
//簡寫為:
let fn = ()=>{//但是沒有引數時,括號不可以省略
return 'helloWorld';
}
//根據規則二,簡寫為:
let fn = ()=>'helloWorld';
一個引數的函式
let fn = function(a){
return a;
}
//簡寫為:
let fn = (a)=>{
return a;
}
//根據規則一,還可以簡寫為:
let fn = a=>{
return a;
}
//根據規則二,還可以簡寫為:
let fn = a=>a;
多個引數的函式
let fn = function(a,b){
return a+b;
}
//簡寫為:
let fn = (a,b)=>{//多於一個引數,圓括號不可省略
return a+b;
}
//根據規則二,還可以簡寫為:
let fn = (a,b)=>a+b;
函式體程式碼多於一行
let fn = function(){
console.log('hello');
console.log('world');
return 'helloWorld';
}
//簡寫為:
let fn = ()=>{
console.log('hello');
console.log('world');
return 'helloWorld';
}
函式返回json物件時
let fn = function(){
return {"a":5};
}
//簡寫為:
//let fn = ()=>{"a":5};這是錯誤的
//應簡寫為:
let fn = ()=>({"a":5});//注意{}外的圓括號。
例項
//排序方法1
let arr = [3,6,2,1];
let arr2 = arr.sort(function(a,b){
return a-b;
});
alert(arr2);
//排序方法2
let arr3 = [939,23,0,-1,94];
let arr4 = arr3.sort((a,b)=>a-b);
alert(arr4);