- 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
// ...
- 網絡云百問百答
- SOA用戶指南
- C++黑客編程揭秘與防范
- 光網絡評估及案例分析
- HCNA網絡技術
- Windows Server 2003 Active Directory Design and Implementation: Creating, Migrating, and Merging Networks
- 物聯網安全技術
- Yii Application Development Cookbook(Second Edition)
- Metasploit Penetration Testing Cookbook
- 物聯網工程概論
- 組網技術與網絡管理
- 云計算技術與標準化
- 想象的互動:網絡人際傳播中的印象形成
- 黑客與反黑工具使用詳解
- 網絡攻防技術與實踐