Arrow Functions
Description
Arrow functions save time when writing out functions. They are also used to access the "this" keyword. They bind the "this" value in JavaScript lexically. "LEXICALLY- Relating to the words or vocabulary of a language."
Example 1:
//Writing function the ES5 way;
var greeting = function(){
console.log("wagwan");
}
greeting();
//Result will be; wagwan
//Writing function the ES6 way;
var greeting = () => {
console.log("wagwan");
}
greeting();
//Result will be; wagwan
//If there's only one line of code in the function, it can be written like so;
var greeting = () => console.log("wagwan");
greeting();
//Result will be; wagwan
//Passing in a parameter and argument
var greeting = (name) => console.log(`${name} says wagwan`);
greeting("John");
//Result will be; John says wagwan
//If there's only one parameter, it can be written like so;
var greeting = name => console.log(`${name} says wagwan`);
greeting("John");
//Result will be; John says wagwan
Example 2: Using the "this" keyword with arrow functions.
var ninja = {
name: "Ranti",
drink(x){
window.setInterval(function(){
if(x > 0){
console.log(this.name + " drank coffee");
x--;
}
}, 1000);
}
}
ninja.drink(5);
//Result will be; drank coffee. With a count of 5 times.
//this.name doesn't add the name to the console because the "this" keyword is referring to the setInterval function and not the ninja object.
//To fix this in ES5, it is done this way;
var ninja = {
name: "Ranti",
drink(x){
var _this = this; //this var is added to make it work.
window.setInterval(function(){
if(x > 0){
console.log(_this.name + " drank coffee"); //_this is used to make it work.
x--;
}
}, 1000);
}
}
ninja.drink(5);
//Result will be; Ranti drank coffee. With a count of 5 times.
//Using ES6, it is done this way;
//The arrow function is used to bind the "this" keyword lexically so that it refers to the object itself.
var ninja = {
name: "Ranti",
drink(x){
window.setInterval(() => {
if(x > 0){
console.log(this.name + " drank coffee");
x--;
}
}, 1000);
}
}
ninja.drink(5);
//Result will be; Ranti drank coffee. With a count of 5 times.
Example 3: Using the "this" keyword with arrow functions in object methods.
//When using the "this" keyword in object methods, the ES5 way of writing functions with the function keyword has to be used. If an arrow function is used like so;
var person = {
firstName: 'John',
lastName: 'Doe',
id: 1,
fullName: () => {
return `${this.firstName} ${this.lastName}`
}
}
console.log(person.fullName());
//Result will be; undefined undefined.
//Based on this, arrow functions are not suitable for object methods. They also can't be used as constructors.