freeCodeCamp/guide/english/javascript/es6/arrow-functions/index.md

68 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Arrow Functions
---
## Arrow functions
Functions in ES6 have changed a bit. I mean the syntax.
```javascript
// Old Syntax
function oldOne() {
console.log("Hello World..!");
}
// New Syntax
const newOne = () => {
console.log("Hello World..!");
}
// Or on one line
const newOne = () => console.log("Hello World..!");
```
The new syntax may be confusing a little bit. But I will try to explain the syntax.
There are two parts of the syntax.
1. const newOne = ()
2. => {}
The first part is just declaring a variable and assigning the function (i.e) () to it. It just says the variable is actually a function. The `const` keyword is used to indicate that the function won't be reassigned. Refer [this](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/guide/english/javascript/es6/let-and-const/index.md) to learn more about `const` and `let`.
Then the second part is declaring the body part of the function. The arrow part with the curly braces defines the body part.
Another example with parameters:
```javascript
let NewOneWithParameters = (a, b) => {
console.log(a+b); // 30
}
NewOneWithParameters(10, 20);
```
Parentheses are optional when there's only one parameter name:
```javascript
let newOneWithOneParam = a => {
console.log(a);
}
```
An incredible advantage of the arrows function is that you can not rebind an arrow function. It will always be called with the context in which it was defined. Just use a normal function.
```javascript
// Old Syntax
axios.get(url).then(function(response) {
this.data = response.data;
}).bind(this);
// New Syntax
axios.get(url).then(response => {
this.data = response.data;
});
```
I dont think I need to give an explanation for this. It's straightforward.