Files
freeCodeCamp/guide/english/javascript/es6/arrow-functions/index.md
Stefan ed1cdbd6e1 Update index.md (#24174)
Add New Syntax one line example
2018-10-20 23:35:33 -07:00

68 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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.