- Mastering Node.js(Second Edition)
- Sandro Pasquali Kevin Faaborg
- 201字
- 2021-07-02 19:28:40
Arrow functions
Arrow functions allow you to shorten function declarations, from function() {} to simply () => {}. Indeed, you can replace a line like this:
SomeEmitter.on('message', function(message) { console.log(message) });
To:
SomeEmitter.on('message', message => console.log(message));
Here, we lose both the brackets and curly braces, and the tighter code works as expected.
Another important feature of arrow functions is they are not assigned their own this—arrow functions inherit this from the call site. For example, the following code does not work:
function Counter() {
this.count = 0;
setInterval(function() {
console.log(this.count++);
}, 1000);
}
new Counter();
The function within setInterval is being called in the context of setInterval, rather than the Counter object, so this does not have any reference to count. That is, at the function call site, this is a Timeout object, which you can check yourself by adding console.log(this) to the prior code.
With arrow functions, this is assigned at the point of definition. Fixing the code is easy:
setInterval(() => { // arrow function to the rescue!
console.log(this);
console.log(this.count++);
}, 1000);
// Counter { count: 0 }
// 0
// Counter { count: 1 }
// 1
// ...
- 連接未來:從古登堡到谷歌的網絡革命
- 自動駕駛網絡:自智時代的網絡架構
- 從區塊鏈到Web3:構建未來互聯網生態
- 5G承載網網絡規劃與組網設計
- 網絡創新指數研究
- Practical Web Design
- 雷達饋線技術
- Learning Swift(Second Edition)
- 城市治理一網統管
- 面向5G-Advanced的關鍵技術
- jQuery Mobile Web Development Essentials
- 網絡設計與應用(第2版)
- 從物聯到萬聯:Node.js與樹莓派萬維物聯網構建實戰
- SEO攻略:搜索引擎優化策略與實戰案例詳解
- React Design Patterns and Best Practices(Second Edition)