diff options
Diffstat (limited to 'files/es/web/javascript/referencia/funciones/arguments')
3 files changed, 0 insertions, 408 deletions
diff --git a/files/es/web/javascript/referencia/funciones/arguments/callee/index.html b/files/es/web/javascript/referencia/funciones/arguments/callee/index.html deleted file mode 100644 index 1902131055..0000000000 --- a/files/es/web/javascript/referencia/funciones/arguments/callee/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: callee -slug: Web/JavaScript/Referencia/Funciones/arguments/callee -tags: - - JavaScript - - JavaScript Reference - - Referencia -translation_of: Web/JavaScript/Reference/Functions/arguments/callee ---- -<div> -<div>{{jsSidebar("Functions")}}</div> -</div> - -<h2 id="Resumen" name="Resumen">Resumen</h2> - -<p>Especifica la función que se está ejecutando actualmente.</p> - -<h2 id="Descripci.C3.B3n" name="Descripci.C3.B3n">Descripción</h2> - -<p><code>callee</code> es una propiedad de la variable local <code>arguments</code> disponible dentro de todos los objetos function; <code>callee</code> como una propiedad de {{jsxref("Funciones/arguments", "Function.arguments")}} ya no se utiliza. (<code>Function.arguments</code> en sí mismo está también desaconsejado.)</p> - -<p><code>arguments.callee</code> permite a funciones anónimas referirse a ellas mismas, lo cual es necesario en funciones anónimas recursivas.</p> - -<p>La palabra clave <code>this</code> no se refiere a la función que se ejecuta actualmente. Use la propiedad <code>callee</code> para referirse a la función dentro del cuerpo de la función.</p> - -<h2 id="Ejemplos" name="Ejemplos">Ejemplos</h2> - -<h3 id="Ejemplo:_Usando_arguments.callee_en_funciones_an.C3.B3nimas_recursivas" name="Ejemplo:_Usando_arguments.callee_en_funciones_an.C3.B3nimas_recursivas">Ejemplo: Usando <code>arguments.callee</code> en funciones anónimas recursivas</h3> - -<p>Una función recursiva debe ser capaz de referirse a sí misma. Típicamente, una función se refiere a sí misma por su nombre. Sin embargo, una función anónima no tiene nombre y por tanto es una variable de referencia para ella, es decir, si la función no está asignada a ninguna variable, la función no puede referirse a sí misma. (Se pueden crear funciones anónimas mediante una expresión {{jsxref("Operadores/function", "function")}} o el constructor {{jsxref("Function")}}.) Aquí es donde entra <code>arguments.callee</code>.</p> - -<p>El siguiente ejemplo define una función, la cuál, en cada turno, define y devuelve una función factorial.</p> - -<pre class="brush: js">function makeFactorialFunc() { - alert('making a factorial function!'); - return function(x) { - if (x <= 1) - return 1; - return x * arguments.callee(x - 1); - }; -} - -var result = makeFactorialFunc()(5); // returns 120 (5 * 4 * 3 * 2 * 1) -</pre> - -<p><span class="comment">this example isn't very practical, but then again, there are few practical cases where arguments.callee is necessary, and most of the those cases involve closures</span></p> - -<p> </p> diff --git a/files/es/web/javascript/referencia/funciones/arguments/index.html b/files/es/web/javascript/referencia/funciones/arguments/index.html deleted file mode 100644 index ab768cff21..0000000000 --- a/files/es/web/javascript/referencia/funciones/arguments/index.html +++ /dev/null @@ -1,229 +0,0 @@ ---- -title: El objeto arguments -slug: Web/JavaScript/Referencia/Funciones/arguments -tags: - - Funciones - - JavaScript - - Namespace - - argumentos - - arguments - - espacio de nombres - - multiples -translation_of: Web/JavaScript/Reference/Functions/arguments ---- -<div>{{jsSidebar("Functions", "Funciones")}}</div> - -<p><strong><code>arguments</code></strong> es un objeto similar a <code>Array</code> accesible dentro de <a href="/es/docs/Web/JavaScript/Guide/Functions">funciones</a> que contiene los valores de los argumentos pasados a esa función.</p> - -<div>{{EmbedInteractiveExample("pages/js/functions-arguments.html")}}</div> - -<div class="hidden">La fuente de este ejemplo interactivo se almacena en un repositorio de GitHub. Si deseas contribuir al proyecto de ejemplos interactivos, clona <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> y envíanos una solicitud de extracción.</div> - -<h2 id="Descripción">Descripción</h2> - -<div class="blockIndicator note"> -<p><strong>Nota</strong>: Si estás escribiendo código compatible con ES6, entonces se deben preferir los {{jsxref("Functions/rest_parameters", "parámetros resto")}}.</p> -</div> - -<div class="blockIndicator note"> -<p><strong>Nota</strong>: "similar a Array" significa que <code>arguments</code> tiene una propiedad {{jsxref("Functions/arguments/length", "lenght")}} y propiedades indexadas desde cero, pero no tiene métodos integrados de {{jsxref("Array")}} como {{jsxref("Array.forEach", "forEach()")}} o {{jsxref("Array.map", "map()")}}. Ve la <a href="#Descripción">§Descripción</a> para obtener más detalles.</p> -</div> - -<p>El objeto <code>arguments</code> es una variable local disponible en todas las funciones que no son {{jsxref("Functions/Arrow_functions", "funciones flecha")}}. Puedes hacer referencia a los argumentos de una función dentro de esa función utilizando su objeto <code>arguments</code>. Tiene entradas para cada argumento con el que se llamó a la función, con el índice de la primera entrada en <code>0</code>.</p> - -<p>Por ejemplo, si a una función se le pasan 3 argumentos, puedes acceder a ellos de la siguiente manera:</p> - -<pre class="brush: js notranslate">arguments[0] // primer argumento -arguments[1] // segundo argumento -arguments[2] // tercer argumento -</pre> - -<p>También puedes establecer o reasignar cada argumento:</p> - -<pre class="brush: js notranslate">arguments[1] = 'new value'; -</pre> - -<p>El objeto <code>arguments</code> no es un {{jsxref("Array")}}. Es similar, pero carece de todas las propiedades de <code>Array</code> excepto de {{jsxref("Array.length", "length")}}. Por ejemplo, no tiene el método {{jsxref("Array.pop", "pop()")}}.</p> - -<p>Sin embargo, se puede convertir en un <code>Array</code> real:</p> - -<pre class="brush: js notranslate">var args = Array.prototype.slice.call(arguments); -// El uso de un arreglo literal es más corto que el anterior pero asigna un arreglo vacío -var args = [].slice.call(arguments); -</pre> - -<p>Así como puedes hacer con cualquier objeto tipo <code>Array</code>, puedes usar el método {{jsxref("Array.from()")}} de ES2015 o la {{jsxref("Operators/Spread_syntax", "propagación de sintaxis")}} para convertir <code>arguments</code> en un arreglo real:</p> - -<pre class="brush: js notranslate">let args = Array.from(arguments); -// o -let args = [...arguments]; -</pre> - -<p>El objeto <code>arguments</code> es útil para funciones llamadas con más argumentos de los que declara aceptar formalmente. Esta técnica es útil para funciones a las que se les puede pasar un número variable de argumentos, como {{jsxref("Math.min()")}}. Esta función de ejemplo acepta cualquier número de argumentos de cadena y devuelve la más larga:</p> - -<pre class="brush: js notranslate">function longestString() { - var longest = ''; - for (var i=0; i < arguments.length; i++) { - if (arguments[i].length > longest.length) { - longest = arguments[i]; - } - } - return longest; -} -</pre> - -<p>Puedes usar {{jsxref("Functions/arguments/lenght", "arguments.length")}} para contar con cuántos argumentos se llamó a la función. Si, en cambio, deseas contar cuántos parámetros se declara que acepta una función, inspecciona la propiedad {{jsxref("Function.length", "length")}} de esa función.</p> - -<h3 id="Usar_typeof_con_arguments">Usar <code>typeof</code> con <code>arguments</code></h3> - -<p>El operador {{jsxref("Operators/typeof", "typeof")}} devuelve <code>'object'</code> cuando se usa con <code>arguments</code></p> - -<pre class="brush: js notranslate">console.log(typeof arguments); // 'object' </pre> - -<p>El tipo de argumentos individuales se puede determinar indexando <code>arguments</code>:</p> - -<pre class="notranslate">console.log(typeof arguments[0]); // devuelve el tipo del primer argumento</pre> - -<h2 id="Propiedades">Propiedades</h2> - -<dl> - <dt>{{jsxref("Functions/arguments/callee", "arguments.callee")}}</dt> - <dd>Referencia a la función en ejecución a la que pertenecen los argumentos. Prohibida en modo estricto.</dd> - <dt>{{jsxref("Functions/arguments/length", "arguments.length")}}</dt> - <dd>El número de argumentos que se pasaron a la función.</dd> - <dt>{{jsxref("Functions/arguments/@@iterator", "arguments[@@iterator]")}}</dt> - <dd>Devuelve un nuevo objeto {{jsxref("Array/@@iterator", "Array iterator", "", 0)}} que contiene los valores de cada índice en <code>arguments</code>.</dd> -</dl> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Definición_de_una_función_que_concatena_varias_cadenas">Definición de una función que concatena varias cadenas</h3> - -<p>Este ejemplo define una función que concatena varias cadenas. El único argumento formal de la función es una cadena que contiene los caracteres que separan los elementos a concatenar.</p> - -<pre class="brush:js notranslate">function myConcat(separator) { - let args = Array.prototype.slice.call(arguments, 1); - return args.join(separator); -}</pre> - -<p>Puedes pasar tantos argumentos como desees a esta función. Devuelve una lista de cadenas usando cada argumento en la lista:</p> - -<pre class="brush:js notranslate">// returns "red, orange, blue" -myConcat(', ', 'red', 'orange', 'blue'); - -// devuelve "elephant; giraffe; lion; cheetah" -myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah'); - -// devuelve "sage. basil. oregano. pepper. parsley" -myConcat('. ', 'sage', 'basil', 'oregano', 'pepper', 'parsley');</pre> - -<h3 id="Definición_de_una_función_que_crea_listas_HTML">Definición de una función que crea listas HTML</h3> - -<p>Este ejemplo define una función que crea una cadena que contiene HTML para una lista. El único argumento formal para la función es una cadena que es "<code>u</code>" si la lista debe estar {{htmlelement("ul", "desordenada (con viñetas)")}}, u "<code>o</code>" si la lista es {{htmlelement("ol", "ordenada (numerada)")}}. La función se define de la siguiente manera:</p> - -<pre class="brush:js notranslate">function list(type) { - var html = '<' + type + 'l><li>'; - var args = Array.prototype.slice.call(arguments, 1); - html += args.join('</li><li>'); - html += '</li></' + type + 'l>'; // fin de la lista - return html; -}</pre> - -<p>Puedes pasar cualquier número de argumentos a esta función y agregar cada argumento como un elemento de lista a una lista del tipo indicado. Por ejemplo:</p> - -<pre class="brush:js notranslate">let listHTML = list('u', 'One', 'Two', 'Three'); - -/* la listHTML es: -"<ul><li>One</li><li>Two</li><li>Three</li></ul>" -*/</pre> - -<h3 id="Parámetros_rest_predeterminados_y_desestructurados">Parámetros <code>rest</code>, predeterminados y desestructurados</h3> - -<div> -<p>El objeto <code>arguments</code> se puede utilizar junto con parámetros {{jsxref("Functions/rest_parameters", "rest")}}, {{jsxref("Functions/Default_parameters", "predeterminados")}} y {{jsxref("Operators/Destructuring_assignment", "desestructurados")}}.</p> -</div> - -<pre class="brush: js notranslate">function foo(...args) { - return args; -} -foo(1, 2, 3); // [1, 2, 3] -</pre> - -<p>Si bien la presencia de parámetros <code>rest</code>, predeterminados o desestructurados no altera <a href="/es/docs/Web/JavaScript/Reference/Strict_mode#Haciendo_eval_y_arguments_más_simples">el comportamiento del objeto <code>arguments</code> en el código de modo estricto</a>, existen sutiles diferencias para el código no estricto.</p> - -<p>En el código de modo estricto, el objeto <code>arguments</code> se comporta de la misma manera independientemente de que se pasen parámetros <code>rest</code>, predeterminados o desestructurados a una función. Es decir, asignar nuevos valores a las variables en el cuerpo de la función no afectará al objeto <code>arguments</code>. La asignación de nuevas variables al objeto <code>arguments</code> tampoco afectará el valor de las variables.</p> - -<div class="blockIndicator note"> -<p><strong>Nota</strong>: No puedes escribir una directiva <code>"use strict";</code> en el cuerpo de una definición de función que acepte parámetros <code>rest</code>, predeterminados o desestructurados. Si lo haces, generará un {{jsxref("Errors/Strict_Non_Simple_Params", "error de sintaxis")}}.</p> -</div> - -<p>Las funciones no estrictas a las que se les pasan solo parámetros simples (es decir, no parámetros <code>rest</code>, predeterminados o desestructurados) sincronizarán el valor de los nuevos valores de las variables en el cuerpo de la función con el objeto <code>arguments</code>, y viceversa:</p> - -<pre class="brush: js notranslate">function func(a) { - arguments[0] = 99; // actualiza arguments[0] además actualiza a - console.log(a); -} -func(10); // 99 -</pre> - -<p>Y también:</p> - -<pre class="brush: js notranslate">function func(a) { - a = 99; // la actualización también actualiza arguments[0] - console.log(arguments[0]); -} -func(10); // 99 -</pre> - -<p>Por el contrario, las funciones no estrictas a las que <strong>se les pasan</strong> parámetros <code>rest</code>, predeterminados o desestructurados <strong>no</strong> sincronizarán los nuevos valores asignados a las variables de los argumentos en el cuerpo de la función con el objeto <code>arguments</code>. En cambio, el objeto <code>arguments</code> en funciones no estrictas con parámetros complejos <strong>siempre</strong> reflejarán los valores pasados a la función cuando se invocó (este es el mismo comportamiento exhibido por todas las funciones en modo estricto, independientemente del tipo de variables que se le pasen):</p> - -<pre class="brush: js notranslate">function func(a = 55) { - arguments[0] = 99; // actualizar arguments[0] tampoco actualiza a - console.log(a); -} -func(10); // 10</pre> - -<p>Y también:</p> - -<pre class="brush: js notranslate">function func(a = 55) { - a = 99; // actualizar a tampoco actualiza arguments[0] - console.log(arguments[0]); -} -func(10); // 10 -</pre> - -<p>Y también:</p> - -<pre class="brush: js notranslate">// Un parámetro predeterminado sin seguimiento -function func(a = 55) { - console.log(arguments[0]); -} -func(); // undefined</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Especificación</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Objectos arguments exóticos')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_del_navegador">Compatibilidad del navegador</h2> - -<div class="hidden">La tabla de compatibilidad de esta página se genera a partir de datos estructurados. Si deseas contribuir con los datos, consulta <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> y envíanos una solicitud de extracción.</div> - -<p>{{Compat("javascript.functions.arguments")}}</p> - -<h2 id="Ve_también">Ve también</h2> - -<ul> - <li>{{jsxref("Function", "Función")}}</li> - <li>{{jsxref("Functions/rest_parameters", "Parámetros resto")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/funciones/arguments/length/index.html b/files/es/web/javascript/referencia/funciones/arguments/length/index.html deleted file mode 100644 index b1d7698194..0000000000 --- a/files/es/web/javascript/referencia/funciones/arguments/length/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: arguments.length -slug: Web/JavaScript/Referencia/Funciones/arguments/length -tags: - - Funciones - - JavaScript - - Propiedades - - argumentos -translation_of: Web/JavaScript/Reference/Functions/arguments/length ---- -<div>{{jsSidebar("Functions")}}</div> - -<p>La propiedad <strong><code>arguments.length</code></strong> contiene el número de argumentos pasados a una función.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox">arguments.length</pre> - -<h2 id="Descripción">Descripción</h2> - -<p>La propiedad arguments.length devuelve el número total de argumentos pasados a una función. Esto puede ser más o menos que el número de parametros definidos. (Véase {{jsxref("Function.length")}}).</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Usando_arguments.length">Usando <code>arguments.length</code></h3> - -<p>En este ejemplo definimos una función que puede sumar dos o más números.</p> - -<pre class="brush: js">function adder(base /*, n2, ... */) { - base = Number(base); - for (var i = 1; i < arguments.length; i++) { - base += Number(arguments[i]); - } - return base; -} -</pre> - -<div class="note"> -<p>Tenga en cuenta la diferencia entre {{jsxref("Function.length")}} y arguments.length</p> -</div> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES1')}}</td> - <td>{{Spec2('ES1')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.1</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_los_navegadores">Compatibilidad con los navegadores</h2> - -<p>{{CompatibilityTable}}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Véase_también">Véase también</h2> - -<ul> - <li>{{jsxref("Function")}}</li> - <li>{{jsxref("Function.length")}}</li> -</ul> |