ES6——箭頭函數

箭頭函數

定義

定義一個箭頭函數很簡單,基本語法是:express

([param] [, param]) => {
       statements
    }
    
    param => expression

param 是參數,根據參數個數不一樣,分這幾種狀況:
() => { ... } // 零個參數用 () 表示;
x => { ... } // 一個參數能夠省略 ();
(x, y) => { ... } // 多參數不能省略 ();
固然,和普通函數同樣,箭頭函數也能夠使用 ES6 新增的「默認參數」和「剩餘參數」( Firefox15+ 開始支持):函數

var func1 = (x = 1, y = 2) => x + y;
    func1(); // 獲得 3
    
    var func2 = (x, ...args) => { console.log(args) };
    func2(1,2,3); // 輸出 [2, 3]

箭頭函數容許多行語句或者單行表達式做爲函數體。多行語句要用 {} 括起來;單行表達式不須要 {},而且會做爲函數返回值:this

x => { return x * x }; // 函數返回 x * x
    x => x * x; // 同上一行
    x => return x * x; // SyntaxError 報錯,不能省略 {}
    x => { x * x }; // 合法,沒有定義返回值,返回 undefined

箭頭函數也是 JS 函數的一種,因此以前的 instanceof 和 typeof 依然可用:prototype

var func1 = () => {};
    func1 instanceof Function; // true
    
    var func2 = () => {};
    typeof func2; // "function"

特性

箭頭函數內部沒有 constructor 方法,也沒有 prototype,因此不支持 new 操做。new (() => {}) 會觸發 TypeError 報錯。指針

new (() => {}) // Uncaught TypeError: () => {} is not a constructor(…)

箭頭函數沒有本身內部的 this 指針。在箭頭函數中, this 指針是繼承於其所在的做用域。(我的理解爲箭頭函數不具有函數做用域,至關於表達式,this即爲箭頭函數被調用時外層的this)code

var a = 1;
    var test = {
        a: 100,
        c: function(){
            console.log(this.a); 
        },
        d: ()=>{console.log(this.a)} 
    }
    test.c();//100
    test.d();//1
相關文章
相關標籤/搜索