1. 程式人生 > >ES6新特性-函式的簡寫(箭頭函式)

ES6新特性-函式的簡寫(箭頭函式)

作者: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);