Arrow Function Notes After Watching ES6 For Everyone
Note post: this short post about Arrow Functions after watching ES6 For Everyone(EFE——for this post) by Wes Bos! Arrow functions are simpler way to write functions in JavaScript. This post contains a few things that I wasn't completely clear on about Arrow Functions that EFE really clarified for me.
Arrow Function Illuminations:
This
will be undefined.- Your can remove even more code cruft that is usually done with Arrow Functions (no mustache brackets needed).
- Arguments which are objects will not work in arrow functions
Deeper Dive
When writing a function normal this
can be bound to things (like elements in example). With arrow functions, this (pun intended) is not the case.
The This Key Word Is Undefined
ES5 Function
var clickFunction = function clickFunc() {
console.log(this);
// This would be the selected element
};
var button1 = document.getElementById('button-1');
button1.addEventListener('click', clickFunction, false);
ES6 Arrow Function
document.getElementById('elem').addEventListener('click', () => {
console.log(this);
// `this` would be undefined
});
Remove Even More Cruft With Arrow Functions
Arrow functions can be even more minimal but most people add certain things like mustaches
for legibility.
Standard Way of Writing an Arrow Function
const button2 = document.getElementById('button-2');
button2.addEventListener('click', () => {
console.log('Normal arrow function');
});
More Minimal Way An Arrow Function Can Be Written
const button3 = document.getElementById('button-3');
button3.addEventListener('click', () => console.log('arrow function with less cruft'));
Objects Cannot Be Used In Arrow Function Arguments
Arrow functions can use arguments——as long as they're not objects.
Standard Way of Writing an Arrow Function
const button4 = document.getElementById('button-4');
const anObj = {
name: 'Objecto'
};
button4.addEventListener('click', (anObj) => {
console.log(anObj);
// anObj will be undefined
});
Arrow Function Notes Conclusion
Play with the examples above on CodePen.
What the this
key word will be bound to and how minimal arrow functions can be is well documented. ES6 For Everyone gives clear examples of that make it much clearer though.
Thank you Wes Bos!!!
Update: After talking with Dan Benson a bit, I discovered even more about arrow functions. These things were covered in Wes Bos's course but I'm even clearer now. See more examples here.