箭頭函式適用場景及需要注意的地方
- 箭頭函式適合於無複雜邏輯或者無副作用的純函式場景下,例如:用在 map、reduce、filter 的回撥函式定義中
- 箭頭函式的亮點是簡潔,但在有多層函式巢狀的情況下,箭頭函式反而影響了函式的作用範圍的識別度,這種情況不建議使用箭頭函式
- 箭頭函式要實現類似純函式的效果,必須剔除外部狀態。所以箭頭函式不具備普通函式里常見的 this、arguments 等,當然也就不能用 call()、apply()、bind() 去改變 this 的指向
-
箭頭函式不適合定義物件的方法(物件字面量方法、物件原型方法、構造器方法),因為箭頭函式沒有自己的 this,其內部的 this 指向的是外層作用域的 this
const json = { bar: 1, fn: () => console.log(this.bar) }; json.fn(); //-> undefined // this 並不是指向 json 這個物件,而是再往上到達全域性作用域
function Foo() { this.bar = 1; } Foo.prototype.fn = () => console.log(this.foo); const foo = new Foo(); foo.fn(); //-> undefined // this 並不是指向 Foo,根據變數查詢規則,回溯到了全域性作用域
const Message = (text) => { this.text = text; }; var helloMessage = new Message('Hello World!'); console.log(helloMessage.text); //-> Message is not a constructor // 不可以當作建構函式,也就是說,不可以使用 new 命令
-
箭頭函式不適合定義結合動態上下文的回撥函式(事件繫結函式),因為箭頭函式在宣告的時候會繫結靜態上下文
const button = document.querySelector('button'); button.addEventListener('click', () => { this.textContent = 'Loading...'; }); // this 並不是指向預期的 button 元素,而是 window
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1795/viewspace-2808103/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解箭頭函式和普通函式的區別以及箭頭函式的注意事項、不適用場景函式
- javascript中的this使用場景以及箭頭函式中的thisJavaScript函式
- 箭頭函式函式
- ES 6 中的箭頭函式及用法函式
- 箭頭函式中的this函式
- TypeScript 箭頭函式TypeScript函式
- JavaScript 箭頭函式JavaScript函式
- JS箭頭函式JS函式
- 箭頭函式this指向的陷阱函式
- 箭頭函式的this指向(二)函式
- ES6中箭頭函式使用的注意事項函式
- 有關箭頭函式函式
- 箭頭函式詳解函式
- 箭頭函式與普通函式的區別函式
- # 普通函式和箭頭函式的區別函式
- JS中的箭頭函式與thisJS函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- 也談箭頭函式的 this 指向問題及相關函式
- 箭頭函式與普通函式區別函式
- 箭頭函式this指向詳解函式
- ES6箭頭函式函式
- ES6箭頭函式的使用函式
- 從settTimeout到匿名函式、箭頭函式之() => {}函式
- 簡述箭頭函式和普通函式的區別函式
- 箭頭函式和普通函式的10個區別函式
- hive時間日期函式及典型場景應用Hive函式
- 2020-10-18 箭頭函式函式
- JavaScript(ES6)—箭頭函式JavaScript函式
- Day 59/100 箭頭函式和普通函式的區別函式
- 面試題:箭頭函式和普通函式的區別面試題函式
- ES6 箭頭函式下的this指向函式
- javaES6箭頭函式的全新特性Java函式
- 深入理解箭頭函式和傳統函式的區別函式
- ES6 箭頭函式(arrow function)函式Function
- ES6箭頭函式總結函式
- ES6 系列之箭頭函式函式
- react裡面bind與箭頭函式React函式
- PHP 7.4 新特性之箭頭函式PHP函式