js 中箭頭函式使用總結

2022-09-05 02:09:14 字數 1595 閱讀 7084

箭頭函式感性認識

箭頭函式 是在es6 中新增的一種規範

x => x * x 相當於 function(x)

箭頭函式相當於 匿名函式, 簡化了函式的定義。 語言的發展都是傾向於簡潔 對人類友好的, 減輕工作量的。 就相當於我最鍾情的python, 有很多類似之處, 在 關於promise 文章中我會和python 框架中的tornado 中的非同步進行對比的, 很相似。

箭頭函式有兩種格式, 一種只包含乙個表示式,沒有 和

return 。 一種包含多條語句, 這個時候{} return

就不能省略

x =>

else

}如果有多個引數就要用():

//兩個引數返回後面的值

(x, y) =>x*y + y*y

//沒有引數

() => 999

//可變引數

(x, y, ...rest) =>

return

sum;

}如果要返回乙個單物件, 就要注意, 如果是單表示式, 上面一種會報錯, 要下面這種

//這樣寫會出錯

x => //

這和函式體{}有衝突

//寫成這種

x =>}

箭頭函式中this 指向

箭頭函式 看起來是匿名函式的簡寫。但是還是有不一樣的地方。 箭頭函式中的this是詞法作用域, 由上寫文確定

var obj =;

return

fn();

}};箭頭函式修復了this的指向,

this

總是指向詞法作用域, 也就是外層呼叫者obj:

var obj =

};obj.getage();

//25

如果使用箭頭函式,以前的那種hack寫法 就不需要了:

var that = this

;var obj=,year)}}

obj.getage(2020)

下面對比寫es5 es6 直接關於箭頭函式的對比使用

//es5

var fn = function(a, b)

//es6 直接被return時候可以省略函式體的括號

const fn=(a,b) => a+b;

//es5

var foo = function

()//

es6const foo=()=>

//注意這裡 箭頭函式可以替代函式表示式但是不能替代函式宣告

var person =

}使用es6 來重構上面的物件

const person =

這樣編譯的結果就是

var person =

}在es6中,會預設採用嚴格模式,因此this也不會自動指向window物件了,而箭頭函式本身並沒有this,因此this就只能是undefined,這一點,在使用的時候,一定要慎重慎重再慎重,不然踩了坑你都不知道自己錯在哪!這種情況,如果你還想用this,就不要用使用箭頭函式的寫法。

//可以稍做改動

const person =}//

編譯之後變成

var person =, 1000);

}};

js中箭頭函式

console.log fn 1 undefind var fn function a console.log fn 1 1 function fn2 a console.log fn 2 2 let fn3 v v let fn3 v 0 let fn4 console.log fn3 5 1,2...

js中箭頭函式和普通函式this的區別

最近在學習angularjs的時候由於裡面涉及到了箭頭函式,箭頭函式除了宣告上有點區別以外,和普通函式最主要的區別還是在this的問題上。js中函式中巢狀的函式this不會 繼承 比如說以下 1 var o 5function outer 7 function inner 10 11 outer.c...

jquery 中 箭頭函式 中 「this「 問題

問題場景 描述 上述事件監聽函式的兩處輸出應該分別是 表單物件 和 被jquery封裝的表單物件 才對,為什麼是window物件?原因尋找 有大佬這樣說 無解,因為箭頭函式在建立時就已經繫結了this,後面在執行時不能重新繫結。在jquery中通常不要用箭頭函式,因為jquery在執行 函式時很多時...