箭頭函數

提到箭頭函數,不得不先回顧一下this

  1. 在全局執行上下文中(在任何函數體外部)this 都指代全局對象。//在瀏覽器中,全局對象是window,在node中是global

2. 普通的函數調用,函數的this指向全劇對象

3. 對象的方法調用,方法內的this指向該對象

4. 使用apply和call調用函數改變this

function fn(c,d){
    console.log(this.a + this.b + c + d)
}
var obj = {
    a:'a',
    b:'b',
    c:'c',
    d:'d'
};
fn.call(obj,2,3) //fn內的this指向了obj 'a' + 'b' + 2 + 3
fn.apply(obj,[2,3])//第一個參數是this指向的對象,第二個參數是一個數組,數組裏的元素用做函數調用中的參數
複製代碼
  1. 在定時器執行函數裏

6. 在事件回調函數裏,指向綁定事件的dom元素

7. 在構造函數裏指向構造函數生成的實例

function Test(){
    this.x = 1;
}
var a = new Test()
複製代碼

箭頭函數的語法

  1. (參數1, 參數2, …, 參數N) => { 函數聲明 }
var fn = (a,b)=>{return a+b}
fn(3,4)
複製代碼
  1. (參數1, 參數2, …, 參數N) => 表達式(單一)
var fn = (a,b)=> console.log(a+b) //var fn=function(a,b){console.log(a+b)}
fn(3,4)

var fn = (a,b)=> a+b //var fn = function(a,b) {return a+b}
複製代碼
  1. 當只有一個參數時,圓括號是可選的:

(單一參數) => {函數聲明}javascript

單一參數 => {函數聲明}html

// 沒有參數的函數應該寫成一對圓括號。 () => {函數聲明}java

箭頭函數不會建立本身的this,它只會從本身做用域的上一層繼承thisnode

  1. 做爲對象的方法被調用

2. 在事件中

參考連接 www.ruanyifeng.com/blog/2010/0…
相關文章
相關標籤/搜索