* Add example of arrow function with no brackets Add an example of the shorter option of an arrow function * Fixed typo
		
			
				
	
	
		
			71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Arrow Functions
 | |
| ---
 | |
| 
 | |
| ## Arrow functions
 | |
| 
 | |
| ES6 has introduced a new syntax that allows to declare functions.
 | |
| 
 | |
| ```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. There are two major parts of it.
 | |
| 
 | |
| 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);
 | |
| }
 | |
| ```
 | |
| 
 | |
| When there is only one statement or operation in the function body, braces are optional and the result is returned or undefined.
 | |
| 
 | |
| ```javascript
 | |
| let a = 10;
 | |
| let newOneParamWithNoBrackets = b => a + b;
 | |
| console.log(newOneParamWithNoBrackets(20)); // 30
 | |
| ```
 | |
| 
 | |
| 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;
 | |
| });
 | |
| 
 | |
| ```
 |