37 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Rest Parameters | |||
|  | localeTitle: Parámetros de descanso | |||
|  | --- | |||
|  | ## Parámetros de descanso
 | |||
|  | 
 | |||
|  | En ES6, la sintaxis del resto de parámetros `...` permite reunir un número indefinido de argumentos en una matriz. | |||
|  | 
 | |||
|  | A pesar de que tienen el mismo aspecto, hace lo opuesto al operador de propagación, que toma todos los elementos de un iterable y los difunde en sus valores individuales. | |||
|  | 
 | |||
|  | ### Sintaxis
 | |||
|  | 
 | |||
|  | ```js | |||
|  | function myFunc(...args) {  | |||
|  |   console.log(args);  | |||
|  |  }  | |||
|  |   | |||
|  |  myFunc( 1, 2, 3, 4, 5);       // [1,2,3,4,5]  | |||
|  | ``` | |||
|  | 
 | |||
|  | Puede prefijar el último parámetro de una función con `...` cuando quiera hacer algo con los parámetros iniciales y luego tratar todos los parámetros restantes de manera diferente. | |||
|  | 
 | |||
|  | ```js | |||
|  | function convertCurrency(rate, fee, ...amounts) {  | |||
|  |   return amounts.map(amount => (amount * rate) + fee);  | |||
|  |  }  | |||
|  |   | |||
|  |  convertCurrency(0.89, 2.5, 100, 250, 75, 150, 300); // [ 91.5, 225, 69.25, 136, 269.5 ]  | |||
|  | ``` | |||
|  | 
 | |||
|  | El `...` permite reunir el resto de los argumentos, si hay alguno, en una matriz. | |||
|  | 
 | |||
|  | ### La diferencia entre los parámetros de reposo y el objeto de argumentos.
 | |||
|  | 
 | |||
|  | `arguments` es un objeto similar a una matriz, disponible dentro de las funciones, que contiene los argumentos pasados a esas funciones. Se llama "como una matriz" porque no tiene todos los métodos integrados de una matriz, como `.forEach()` y `.map()` . | |||
|  | 
 | |||
|  | Los demás parámetros son una matriz, con todos los métodos de matriz incluidos. |