66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Arrow Functions | ||
|  | localeTitle: Funções de seta | ||
|  | --- | ||
|  | As funções de seta são uma nova sintaxe do ES6 para escrever expressões de função JavaScript. A sintaxe mais curta economiza tempo, além de simplificar o escopo da função. | ||
|  | 
 | ||
|  | ## O que são funções de seta?
 | ||
|  | 
 | ||
|  | Uma expressão de função de seta é uma sintaxe mais concisa para expressões de função de escrita usando um token de "seta gorda" ( `=>` ). | ||
|  | 
 | ||
|  | ### A sintaxe básica
 | ||
|  | 
 | ||
|  | Abaixo está um exemplo básico de uma função de seta: | ||
|  | 
 | ||
|  | ```javascript | ||
|  | // ES5 syntax  | ||
|  |  var multiply = function(x, y) {  | ||
|  |   return x * y;  | ||
|  |  };  | ||
|  |   | ||
|  |  // ES6 arrow function  | ||
|  |  var multiply = (x, y) => { return x * y; };  | ||
|  |   | ||
|  |  // Or even simpler  | ||
|  |  var multiply = (x, y) => x * y;  | ||
|  | ``` | ||
|  | 
 | ||
|  | Você não precisa mais da `function` e `return` palavras-chave, ou até mesmo as chaves. | ||
|  | 
 | ||
|  | ### Um simplificado `this`
 | ||
|  | 
 | ||
|  | Antes de funções de seta, novas funções definidas sua própria `this` valor. Para usar `this` dentro de uma expressão de função tradicional, temos que escrever uma solução alternativa assim: | ||
|  | 
 | ||
|  | ```javascript | ||
|  | // ES5 syntax  | ||
|  |  function Person() {  | ||
|  |   // we assign `this` to `self` so we can use it later  | ||
|  |   var self = this;  | ||
|  |   self.age = 0;  | ||
|  |   | ||
|  |   setInterval(function growUp() {  | ||
|  |     // `self` refers to the expected object  | ||
|  |     self.age++;  | ||
|  |   }, 1000);  | ||
|  |  }  | ||
|  | ``` | ||
|  | 
 | ||
|  | Uma função de seta não define é possuir `this` valor, ele herda `this` da função delimitador: | ||
|  | 
 | ||
|  | ```javascript | ||
|  | // ES6 syntax  | ||
|  |  function Person(){  | ||
|  |   this.age = 0;  | ||
|  |   | ||
|  |   setInterval(() => {  | ||
|  |     // `this` now refers to the Person object, brilliant!  | ||
|  |     this.age++;  | ||
|  |   }, 1000);  | ||
|  |  }  | ||
|  |   | ||
|  |  var p = new Person();  | ||
|  | ``` | ||
|  | 
 | ||
|  | #### Leitura Adicional
 | ||
|  | 
 | ||
|  | [Ligação MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) |