diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:41:45 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:41:45 -0500 |
commit | 1109132f09d75da9a28b649c7677bb6ce07c40c0 (patch) | |
tree | 0dd8b084480983cf9f9680e8aedb92782a921b13 /files/es/web/javascript/reference | |
parent | 4b1a9203c547c019fc5398082ae19a3f3d4c3efe (diff) | |
download | translated-content-1109132f09d75da9a28b649c7677bb6ce07c40c0.tar.gz translated-content-1109132f09d75da9a28b649c7677bb6ce07c40c0.tar.bz2 translated-content-1109132f09d75da9a28b649c7677bb6ce07c40c0.zip |
initial commit
Diffstat (limited to 'files/es/web/javascript/reference')
33 files changed, 2691 insertions, 0 deletions
diff --git a/files/es/web/javascript/reference/errors/bad_octal/index.html b/files/es/web/javascript/reference/errors/bad_octal/index.html new file mode 100644 index 0000000000..b12b1bc346 --- /dev/null +++ b/files/es/web/javascript/reference/errors/bad_octal/index.html @@ -0,0 +1,45 @@ +--- +title: 'SyntaxError: "x" is not a legal ECMA-262 octal constant' +slug: Web/JavaScript/Reference/Errors/Bad_octal +translation_of: Web/JavaScript/Reference/Errors/Bad_octal +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">Warning: SyntaxError: 08 is not a legal ECMA-262 octal constant. +Warning: SyntaxError: 09 is not a legal ECMA-262 octal constant. +</pre> + +<h2 id="Tipo_de_Error">Tipo de Error</h2> + +<p>{{jsxref("SyntaxError")}} warning in <a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">strict mode</a> only.</p> + +<h2 id="Que_salio_mal">Que salio mal ?</h2> + +<p><span id="result_box" lang="es"><span>Los literales decimales pueden comenzar con un cero (0) seguido de otro dígito decimal, pero Si todos los dígitos después del 0 inicial son más pequeños que 8, el número se interpreta como un número octal.</span> <span>Pero este no es el caso con 08 y 09, JavaScript advierte sobre ello.</span></span></p> + +<p><span id="result_box" lang="es"><span>Tenga en cuenta que las literales octales y las secuencias de escape octal están obsoletas y presentarán una advertencia de depreciación adicional.</span> <span>Con ECMAScript 6 y posteriores, la sintaxis utiliza un cero a la izquierda seguido de una letra latina en minúscula o mayúscula "O" (0o o 0O).</span> <span>Consulte la página sobre gramática léxica para obtener más información.</span></span></p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Numeros_octales_invalidos">Numeros octales invalidos</h3> + +<pre class="brush: js example-bad">08; +09; +// SyntaxError: 08 is not a legal ECMA-262 octal constant +// SyntaxError: octal literals and octal escape sequences are deprecated</pre> + +<h3 id="Números_octales_válidos"><span class="short_text" id="result_box" lang="es"><span>Números octales válidos</span></span></h3> + +<p><span class="short_text" id="result_box" lang="es"><span>Utilice el cero inicialmente seguido de la letra "o";</span></span></p> + +<pre class="brush: js example-good">0O755; +0o644; +</pre> + +<h2 id="Ver_Tambien">Ver Tambien</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Octal">Gramatica lexica</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/caracter_ilegal/index.html b/files/es/web/javascript/reference/errors/caracter_ilegal/index.html new file mode 100644 index 0000000000..cc9422a21d --- /dev/null +++ b/files/es/web/javascript/reference/errors/caracter_ilegal/index.html @@ -0,0 +1,83 @@ +--- +title: 'ErrorDeSintaxis: Caracter ilegal' +slug: Web/JavaScript/Reference/Errors/caracter_ilegal +tags: + - Error + - Error de sintaxis + - JavaScript + - SyntaxError + - errores +translation_of: Web/JavaScript/Reference/Errors/Illegal_character +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">SyntaxError: illegal character (Firefox) +SyntaxError: Invalid or unexpected token (Chrome)</pre> + +<pre class="syntaxbox">ErrorDeSintasix: Carácter ilegal (Firefox) +ErrorDeSintasix: Componente léxico inválido o inesperado (Chrome) +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("SyntaxError")}} {{jsxref("ErrorDeSintaxis")}}</p> + +<h2 id="¿Qué_salió_mal">¿Qué salió mal?</h2> + +<p>Hay un componente léxico inválido o inesperado que no pertenece a su posición en el código. Utilice un editor que soporte el resaltado de sintaxis y que revise cuidadosamente su código contra discrepancias como un signo menos (<code> - </code>) contra un guion (<code> – </code>) o comillas simples (<code> " </code>) contra comillas no estándar (<code> “ </code>).</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Caracteres_no_coincidentes">Caracteres no coincidentes</h3> + +<p>Algunos caracteres parecen iguales, pero hará que el analizador falle al interpretar su código.</p> + +<pre class="brush: js example-bad">“Esto parece una cadena de caracteres”; +<code class="language-js"><span class="comment token">// SyntaxError: illegal character</span></code> +// ErrorDeSintaxis: Carácter ilegal + +42 – 13; +<code class="language-js"><span class="comment token">// SyntaxError: illegal character</span></code> +// ErrorDeSintaxis: Carácter ilegal +</pre> + +<p>Esto debería funcionar:</p> + +<pre class="brush: js example-good">"Esto en realidad es una cadena de caracteres"; + +42 - 13; +</pre> + +<h3 id="Caracteres_olvidados">Caracteres olvidados</h3> + +<p>Es fácil olvidar caracteres aquí o allí.</p> + +<pre class="brush: js example-bad">var colors = ['#000', #333', '#666']; +<code class="language-js"><span class="comment token">// SyntaxError: illegal character</span></code> +// ErrorDeSintaxis: Carácter ilegal +</pre> + +<p>Agregue la comilla olvidada para <code><strong>'</strong>#333'</code>.</p> + +<pre class="brush: js example-good">var colors = ['#000', '#333', '#666'];</pre> + +<h3 id="Caracteres_escondidos">Caracteres escondidos</h3> + +<p>Cuando copia y pega un código de una fuente externa, puede haber caracteres inválidos. ¡Cuidado!</p> + +<pre class="brush: js example-bad">var foo = 'bar'; +<code class="language-js"><span class="comment token">// SyntaxError: illegal character</span></code> +// ErrorDeSintaxis: Carácter ilegal +</pre> + +<p>Al inspeccionar este código en un editor como Vim, puede ver que en realidad hay un carácter de <a href="https://en.wikipedia.org/wiki/Zero-width_space">espacio de ancho cero (ZWSP) (U+200B)</a>.</p> + +<pre class="brush: js">var foo = 'bar';<200b></pre> + +<h2 id="Vea_también">Vea también</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar">Gramática léxica</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/deprecated_source_map_pragma/index.html b/files/es/web/javascript/reference/errors/deprecated_source_map_pragma/index.html new file mode 100644 index 0000000000..bd44b0ed7c --- /dev/null +++ b/files/es/web/javascript/reference/errors/deprecated_source_map_pragma/index.html @@ -0,0 +1,57 @@ +--- +title: >- + SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# + instead +slug: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma +tags: + - Error + - Fuente + - JavaScript +translation_of: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">Advertencia: Error de Sintaxis al utilizar //@ para indicar el código fuente de la URL esta obsoleto. En su lugar use //#. + +Advertencia: Error de Sintaxis: al utilizar //@ para indicar el mapeo de programas del código fuente de la URL esta obsoleto. En su lugar use //#. +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>Una advertencia ocurrida como esta {{jsxref("SyntaxError")}}. JavaScript no se detendrá.</p> + +<h2 id="Descripción_del_error">Descripción del error</h2> + +<p>Esta es una sintaxis obsoleta del codigo fuente de mapa en JavaScript.</p> + +<p>Las sintaxis de código fuente de mapa en JavaScript se suelen combinar y minificar para hacer que la entrega desde el servidor sea más eficiente. Con los códigos de origen de mapas, el depurador puede asignar el código que se está ejecutando a los archivos de origen.</p> + +<p>La especificación de mapa de código fuente cambió la sintaxis debido a un conflicto con IE con la versión windows 8.x siempre que se encontró en la página. Despues <code> //@cc_on</code> fue interpretado para activar la compilación condicional en el motor IE JScript. <a href="https://docs.microsoft.com/en-us/scripting/javascript/reference/at-cc-on-statement-javascript">El comentario de compilación condicional</a> en IE es una característica poco conocida, pero rompió mapas de fuente de origen con <a href="https://bugs.jquery.com/ticket/13274">jQuery</a> y otras bibliotecas.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Sintaxis_obsoleta">Sintaxis obsoleta</h3> + +<p>Sintaxis con el signo obsoleto "@".</p> + +<pre class="brush: js example-bad">//@ sourceMappingURL=http://example.com/path/to/your/sourcemap.map +</pre> + +<h3 id="Sintaxis_estándar">Sintaxis estándar</h3> + +<p>En su lugar use el signo "#".</p> + +<pre class="brush: js example-good">//# sourceMappingURL=http://example.com/path/to/your/sourcemap.map</pre> + +<p>O, alternativamente, puede establecer un encabezado en su archivo JavaScript para evitar tener un comentario de error de sintaxis:</p> + +<pre class="brush: js example-good">X-SourceMap: /path/to/file.js.map</pre> + +<h2 id="Vea_También">Vea También</h2> + +<ul> + <li><a href="/en-US/docs/Tools/Debugger/How_to/Use_a_source_map">Como utilizar un mapa de Fuentes - Documentación de Herramientas de Firefox</a><a href="/en-US/docs/Tools/Debugger/How_to/Use_a_source_map"> </a></li> + <li><a href="http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/">Introducción a las fuentes – HTML5 rocks</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/falta_puntoycoma_antes_de_declaracion/index.html b/files/es/web/javascript/reference/errors/falta_puntoycoma_antes_de_declaracion/index.html new file mode 100644 index 0000000000..c03cb15dd2 --- /dev/null +++ b/files/es/web/javascript/reference/errors/falta_puntoycoma_antes_de_declaracion/index.html @@ -0,0 +1,72 @@ +--- +title: 'ErrordeSintaxis: Punto y coma ; faltante antes de la declaracion' +slug: Web/JavaScript/Reference/Errors/Falta_puntoycoma_antes_de_declaracion +tags: + - JavaScript + - errores + - errorsintaxis + - puntoycoma +translation_of: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement +--- +<div>{{jsSidebar("Errores")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">Error de Sintaxis: Punto y coma ; faltante antes de la declaración +</pre> + +<h2 id="Tipo_de_Error">Tipo de Error</h2> + +<p>{{jsxref("SyntaxError")}}.</p> + +<h2 id="¿Qué_salio_mal">¿Qué salio mal?</h2> + +<p>Hay un punto y coma (<code>;</code>) faltando en alguna parte. Las declaraciones Javascript deben terminar con punto y coma. Algunas de ellas son afectadas por la inserción automática<a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion"> (ASI)</a>, pero en este caso necesitas colocar un punto y coma, de esta forma Javascript puede analizar el código fuente de forma correcta.</p> + +<p>Sin embargo, algunas veces, este error es solo una consecuencia de otro error, como no separar las cadenas de texto correctamente, o usar <em>var</em> incorrectamente. Tal vez tengas muchos paréntesis en algún lugar. Revisa cuidadosamente la sintaxis cuando este error es lanzado.</p> + +<h2 id="Ejemplo">Ejemplo</h2> + +<h3 id="Cadenas_de_texto_(strings)_sin_terminar">Cadenas de texto (strings) sin terminar</h3> + +<p>Este error puede pasar fácilmente cuando no se colocan las comillas correctamente y el motor de JavaScript esta esperando el final de la cadena. por ejemplo:</p> + +<pre class="brush: js example-bad">var foo = 'El bar de Tom's'; +// Error de Sintaxis: Punto y coma ; faltante antes de la declaración</pre> + +<p>En este caso se pueden usar comillas dobles para escapar del apóstrofe:</p> + +<pre class="brush: js example-good">var foo = "El bar de Tom's"; +var foo = 'El bar de Tom\'s'; +</pre> + +<div class="note"> +<p>Nota: Este error suele pasar frecuentemene con cadenas del idioma Inglés</p> +</div> + +<h3 id="Declarar_propiedades_con_var">Declarar propiedades con var</h3> + +<p><strong>No se pueden</strong> declarar propiedades de un objeto o arreglo con una declaración <code>var</code></p> + +<pre class="brush: js example-bad">var obj = {}; +var obj.foo = 'hola'; // Error de Sintaxis: Punto y coma ; faltante antes de la declaración + +var array = []; +var array[0] = 'mundo'; // Error de Sintaxis: Punto y coma ; faltante antes de la declaración +</pre> + +<p>En vez de esto. omitamos la palabra <code>var</code>:</p> + +<pre class="brush: js example-good">var obj = {}; +obj.foo = 'hola'; + +var array = []; +array[0] = 'mundo'; +</pre> + +<h2 id="Ver_también">Ver también:</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion">Automatic semicolon insertion (ASI)</a></li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements">JavaScript statements</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/in_operator_no_object/index.html b/files/es/web/javascript/reference/errors/in_operator_no_object/index.html new file mode 100644 index 0000000000..d2a549f48a --- /dev/null +++ b/files/es/web/javascript/reference/errors/in_operator_no_object/index.html @@ -0,0 +1,71 @@ +--- +title: 'TypeError: cannot use ''in'' operator to search for ''x'' in ''y''' +slug: Web/JavaScript/Reference/Errors/in_operator_no_object +tags: + - Error + - JavaScript + - TiposError + - TypeError + - errores +translation_of: Web/JavaScript/Reference/Errors/in_operator_no_object +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">TypeError: cannot use 'in' operator to search for 'x' in 'y' (Firefox, Chrome) +</pre> + +<h2 id="Tipo_de_Error">Tipo de Error</h2> + +<p>{{jsxref("TypeError")}}</p> + +<h2 id="¿Qué_salió_mal">¿Qué salió mal?</h2> + +<p>El <a href="/en-US/docs/Web/JavaScript/Reference/Operators/in">operador <code>in</code> </a>puede ser usado sólo para verificar si una propiedad se encuentra en un objeto. No puede buscar en cadenas de caracteres, o en números, u otro tipo primitivo.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Buscando_en_cadenas_de_caracteres">Buscando en cadenas de caracteres</h3> + +<p>A diferencia de otros lenguajes de programación (ej. Python), no puede buscar cadenas de texto usando el<a href="/en-US/docs/Web/JavaScript/Reference/Operators/in"> operator</a> <a href="/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code></a>.</p> + +<pre class="brush: js example-bad">"Hello" in "Hello World"; +// TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'</pre> + +<p>En su lugar, deberá usar {{jsxref("String.prototype.indexOf()")}}, por ejemplo.</p> + +<pre class="brush: js example-good">"Hello World".indexOf("Hello") !== -1; +// true</pre> + +<h3 id="El_operando_no_puede_ser_null_o_undefined">El operando no puede ser <code>null</code> o <code>undefined</code></h3> + +<p>Asegúrese que el objeto que está inspeccionando no sea {{jsxref("null")}} o {{jsxref("undefined")}}.</p> + +<pre class="brush: js example-bad">var foo = null; +"bar" in foo; +// TypeError: cannot use 'in' operator to search for 'bar' in 'foo' +</pre> + +<p>El operador <code>in</code> siempre espera un objeto.</p> + +<pre class="brush: js example-good">var foo = { baz: "bar" }; +"bar" in foo; // false + +"PI" in Math; // true +"pi" in Math; // false +</pre> + +<h3 id="Buscando_en_arreglos">Buscando en arreglos</h3> + +<p>Tenga cuidado cuando use el operador <code>in</code> para buscar en objetos {{jsxref("Array")}}. El operador <code>in</code> verifica el índice numérico, no el valor de dicho índice.</p> + +<pre class="brush: js">var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple']; +3 in trees; // true +"oak" in trees; // false</pre> + +<h2 id="Vea_también">Vea también</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> operator</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/index.html b/files/es/web/javascript/reference/errors/index.html new file mode 100644 index 0000000000..c752aa10c6 --- /dev/null +++ b/files/es/web/javascript/reference/errors/index.html @@ -0,0 +1,29 @@ +--- +title: JavaScript error reference +slug: Web/JavaScript/Reference/Errors +tags: + - Depuración + - Error + - Excepciones + - Excepción + - JavaScript + - errores +translation_of: Web/JavaScript/Reference/Errors +--- +<p>{{jsSidebar("Errors")}}</p> + +<p>Abajo encontraras una lista de los errores que son generados por JavaScript. Estos errores pueden ser una ayuda útil al depurar, aunque el problema reportado no siempre es precisamente claro. Las paginas de abajo proporcionan detalles adicionales sobre estos errores. Cada error es un objeto basado en el objeto {{jsxref("Error")}} , y tiene un <code>nombre</code> y un <code>mensaje</code>.</p> + +<p>Los errores mostrados en la consola web pueden incluir un link a la pagina debajo correspondiente para ayudarte a comprender rápidamente el problema en tu código.</p> + +<h2 id="Lista_de_errores">Lista de errores</h2> + +<p>En esta lista, cada pagina esta ordenada por nombre (el tipo de error) y el mensaje (un mensaje de error mas detallado y legible). Juntos,estas dos propiedades proveen un punto de partida hacia el entendimiento y la resolución del problema. Para mas información, ¡Sigue los links abajo!</p> + +<p>{{ListSubPages("/en-US/docs/Web/JavaScript/Reference/Errors")}}</p> + +<h2 id="Ve_también">Ve también</h2> + +<ul> + <li><a href="/en-US/docs/Learn/JavaScript/First_steps/What_went_wrong">¿Qué salió mal? Solucionando Javascript</a>: El tutorial introductorio para principiantes sobre la reparación en errores de JavaScript.</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/indicador_regexp_no-val/index.html b/files/es/web/javascript/reference/errors/indicador_regexp_no-val/index.html new file mode 100644 index 0000000000..3bb05d9b89 --- /dev/null +++ b/files/es/web/javascript/reference/errors/indicador_regexp_no-val/index.html @@ -0,0 +1,113 @@ +--- +title: 'SyntaxError: indicador de expresión regular no válido "x"' +slug: Web/JavaScript/Reference/Errors/Indicador_regexp_no-val +tags: + - Error + - Error de sintaxis + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Bad_regexp_flag +--- +<div>{{jsSidebar("Errors", "Errores")}}</div> + +<p>La excepción de JavaScript "indicador de expresión regular no válido" se produce cuando las indicadores, definidas después de la segunda barra en la expresión regular literal, no son de <code>g</code>, <code>i</code>, <code>m</code>, <code>s</code>, <code>u</code> o <code>y</code>.</p> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox notranslate">SyntaxError: error de sintaxis en la expresión regular (Edge) +SyntaxError: marca de expresión regular no válida "x" (Firefox) +SyntaxError: indicadores de expresión regular no válidos (Chrome) +</pre> + +<h2 id="Tipo_Error">Tipo <code>Error</code></h2> + +<p>{{jsxref("SyntaxError")}}</p> + +<h2 id="¿Qué_salió_mal">¿Qué salió mal?</h2> + +<p>Hay indicadores de expresión regular no válidos en el código. En una expresión regular literal, que consiste en un patrón encerrado entre barras, los indicadores se definen después de la segunda barra. También se pueden definir en la función constructora del objeto {{jsxref("RegExp")}} (segundo parámetro). Los indicadores de expresión regular se pueden usar por separado o juntos en cualquier orden, pero solo hay seis de ellos en ECMAScript.</p> + +<p>Para incluir una bandera con la expresión regular, usa esta sintaxis:</p> + +<pre class="brush: js notranslate">var re = /patrón/indicadores; +</pre> + +<p>o</p> + +<pre class="brush: js notranslate">var re = new RegExp('patrón', 'indicadores');</pre> + +<table class="standard-table"> + <caption>Indicadores de expresión regular</caption> + <thead> + <tr> + <th scope="col">Bandera</th> + <th scope="col">Descripción</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>g</code></td> + <td>Búsqueda global.</td> + </tr> + <tr> + <td>i</td> + <td>Búsqueda que no distingue entre mayúsculas y minúsculas.</td> + </tr> + <tr> + <td>m</td> + <td>Búsqueda multilínea.</td> + </tr> + <tr> + <td>s</td> + <td>Permite que el punto (<code>.</code>) coincida con las nuevas líneas (agregado en ECMAScript 2018)</td> + </tr> + <tr> + <td>u</td> + <td>Unicode; trata el patrón como una secuencia de puntos de código Unicode</td> + </tr> + <tr> + <td>y</td> + <td>Realiza una búsqueda "pegajosa" que coincida a partir de la posición actual en la cadena de destino. Consulta {{jsxref("RegExp.sticky", "sticky")}}</td> + </tr> + </tbody> +</table> + +<h2 id="Ejemplos">Ejemplos</h2> + +<p>Solo hay seis indicadores de expresión regular válidos.</p> + +<pre class="brush: js example-bad notranslate">/foo/bar; + +// SyntaxError: indicador de expresión regular no válido "b" +</pre> + +<p>¿Tenías la intención de crear una expresión regular? Una expresión que contiene dos barras se interpreta como una expresión regular literal.</p> + +<pre class="brush: js example-bad notranslate">let obj = { + url: /docs/Web +}; + +// SyntaxError: indicador de expresión regular no válido "W" +</pre> + +<p>¿O pretendías crear una cadena en su lugar? Agrega comillas simples o dobles para crear una cadena literal.</p> + +<pre class="brush: js example-good notranslate">let obj = { + url: '/docs/Web' +};</pre> + +<h3 id="Indicadores_de_expresión_regular_válidos">Indicadores de expresión regular válidos</h3> + +<p>Consulta la tabla anterior para ver las seis marcas de expresiones regulares válidas que están permitidas en JavaScript.</p> + +<pre class="brush: js example-good notranslate">/foo/g; +/foo/gims; +/foo/uy; +</pre> + +<h2 id="Ve_también">Ve también</h2> + +<ul> + <li>{{JSxRef("../Guide/Regular_Expressions", "Expresiones regulares")}}</li> + <li><a href="http://xregexp.com/flags/">Indicadores de RegEx</a> – biblioteca de expresiones regulares que proporciona cuatro nuevos indicadores (<code>n</code>, <code>s</code>, <code>x</code>, <code>A</code>)</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/invalid_array_length/index.html b/files/es/web/javascript/reference/errors/invalid_array_length/index.html new file mode 100644 index 0000000000..f0665e5e7f --- /dev/null +++ b/files/es/web/javascript/reference/errors/invalid_array_length/index.html @@ -0,0 +1,78 @@ +--- +title: 'RangeError: invalid array length' +slug: Web/JavaScript/Reference/Errors/Invalid_array_length +tags: + - Array + - JavaScript + - RangeError + - errores +translation_of: Web/JavaScript/Reference/Errors/Invalid_array_length +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">RangeError: invalid array length (Firefox) +RangeError: Invalid array length (Chrome) +RangeError: Invalid array buffer length (Chrome) +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("RangeError")}}</p> + +<h2 id="¿Cuál_es_el_problema">¿Cuál es el problema?</h2> + +<p>Una longitud de array inválida puede presentarse en éstas situaciones:</p> + +<ul> + <li>Cuando se crea un {{jsxref("Array")}} o un {{jsxref("ArrayBuffer")}} el cual tiene una longitud negativa o es igual o mayor a 2<sup>32</sup>, o</li> + <li>cuando se define la propiedad {{jsxref("Array.length")}} a un valor el cual es negativo o es igual o mayor a 2<sup>32</sup>.</li> +</ul> + +<p>¿Por qué el <code>Array</code> y <code>ArrayBuffer</code> tienen longitud limitada? La propiedad de longitud de un <code>Array</code> o un <code>ArrayBuffer</code> está representada con un entero sin signo de 32 bits, el cual sólo puede almacenar valores que estén en el rango de 0 a 2<sup>32</sup>-1.</p> + +<p>Si estás creando un <code>Array</code> usando el constructor, es mejor que utilices la notación literal, ya que el primer argumento es interpretado como la longitud del <code>Array</code>.</p> + +<p>De lo contrario, puedes <span class="_Tgc">especificar</span> un mínimo y un máximo para la longitud antes de definir la propiedad de longitud, o puedes usarla como el argumento del constructor.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Casos_inválidos">Casos inválidos</h3> + +<pre class="brush: js example-bad">new Array(Math.pow(2, 40)) +new Array(-1) +new ArrayBuffer(Math.pow(2, 32)) +new ArrayBuffer(-1) + +let a = []; +a.length = a.length - 1; // definir la propiedad de longitud a -1 + +let b = new Array(Math.pow(2, 32) - 1); +b.length = b.length + 1; // definir la propiedad de longitud a 2^32 +</pre> + +<h3 id="Casos_válidos">Casos válidos</h3> + +<pre class="brush: js example-good">[ Math.pow(2, 40) ] // [ 1099511627776 ] +[ -1 ] // [ -1 ] +new ArrayBuffer(Math.pow(2, 32) - 1) +new ArrayBuffer(0) + +let a = []; +a.length = Math.max(0, a.length - 1); + +let b = new Array(Math.pow(2, 32) - 1); +b.length = Math.min(0xffffffff, b.length + 1); + +// 0xffffffff es la notación hexadecimal de 2^32 - 1 +// el cual también se puede especificar como (-1 >>> 0) +</pre> + +<h2 id="Véase_también">Véase también</h2> + +<ul> + <li>{{jsxref("Array")}}</li> + <li>{{jsxref("Array.length")}}</li> + <li>{{jsxref("ArrayBuffer")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/invalid_date/index.html b/files/es/web/javascript/reference/errors/invalid_date/index.html new file mode 100644 index 0000000000..f8036e83e2 --- /dev/null +++ b/files/es/web/javascript/reference/errors/invalid_date/index.html @@ -0,0 +1,58 @@ +--- +title: 'RangeError: invalid date' +slug: Web/JavaScript/Reference/Errors/Invalid_date +tags: + - ErrorDeRango + - JavaScript + - errores +translation_of: Web/JavaScript/Reference/Errors/Invalid_date +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">RangeError: invalid date (Firefox) +RangeError: invalid time value (Chrome) +RangeError: Provided date is not in valid range (Chrome) +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("RangeError")}}</p> + +<h2 id="¿Cuál_es_el_problemaEdit">¿Cuál es el problema?<a class="button section-edit only-icon" href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Errors/Invalid_array_length$edit#¿Cuál_es_el_problema" rel="nofollow, noindex"><span>Edit</span></a></h2> + +<p><span id="noHighlight_0.5046278067977897">Se ha proporcionado una cadena con una fecha no válida para </span>{{jsxref("Date")}} o {{jsxref("Date.parse()")}}.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Casos_no_válidos">Casos no válidos</h3> + +<div class="textArea" id="destText" style="direction: ltr;"> +<div><span id="noHighlight_0.47667740970902406">Las cadenas o fechas irreconocibles que contienen valores de elementos ilegales en cadenas con formato ISO suelen devolver {{jsxref("Nan")}}. Sin embargo, dependiendo de la implementación, las cadenas de formato ISO no conformes, también pueden lanzar </span><code>RangeError: invalid date</code><span>, como los siguientes casos en Firefox:</span></div> + +<div> </div> +</div> + +<pre class="brush: js example-bad">new Date('foo-bar 2014'); +new Date('2014-25-23').toISOString(); +new Date('foo-bar 2014').toString(); +</pre> + +<p>Esto, sin embargo, devuelve {{jsxref("NaN")}} en Firefox:</p> + +<pre class="brush: js example-bad">Date.parse('foo-bar 2014'); // NaN</pre> + +<p>Para más información, consulte la documentación de {{jsxref("Date.parse()")}}.</p> + +<h3 id="Casos_válidos">Casos válidos</h3> + +<pre class="brush: js example-good">new Date('05 October 2011 14:48 UTC');</pre> + +<h2 id="Véase_también">Véase también</h2> + +<ul> + <li>{{jsxref("Date")}}</li> + <li>{{jsxref("Date.prototype.parse()")}}</li> + <li>{{jsxref("Date.prototype.toISOString()")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/malformed_formal_parameter/index.html b/files/es/web/javascript/reference/errors/malformed_formal_parameter/index.html new file mode 100644 index 0000000000..b4139e8269 --- /dev/null +++ b/files/es/web/javascript/reference/errors/malformed_formal_parameter/index.html @@ -0,0 +1,60 @@ +--- +title: 'SyntaxError: Malformed formal parameter' +slug: Web/JavaScript/Reference/Errors/Malformed_formal_parameter +tags: + - JavaScript + - SyntaxError + - errores +translation_of: Web/JavaScript/Reference/Errors/Malformed_formal_parameter +--- +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">SyntaxError: Expected {x} (Edge) +SyntaxError: malformed formal parameter (Firefox) +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("SyntaxError")}}</p> + +<h2 id="¿Qué_salió_mal"><span class="tlid-translation translation" lang="es"><span title="">¿Qué salió mal?</span></span></h2> + +<p><span class="tlid-translation translation" lang="es"><span title="">Hay un constructor <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function"><code>Function()</code> </a>con al menos dos argumentos pasados en el código.</span> <span title="">El último argumento es el código fuente de la nueva función que está creando.</span> <span title="">Todo lo demás forma la lista de argumentos de su nueva función.</span><br> + <br> + <span title="">La lista de argumentos no es válida de alguna manera.</span> <span title="">Quizás eligió accidentalmente una palabra clave como <code>if</code> o <code>var</code> como nombre de argumento, o tal vez haya algún signo de puntuación en su lista de argumentos.</span> <span title="">O tal vez accidentalmente pasó un valor no válido, como un número u objeto.</span></span></p> + +<h2 id="OK_eso_solucionó_mi_problema._Pero_¿Por_qué_no_dijiste_eso_en_primer_lugar"><span class="tlid-translation translation" lang="es"><span title="">OK, eso solucionó mi problema.</span> <span title="">Pero, ¿Por qué no dijiste eso en primer lugar?</span></span></h2> + +<p><span class="tlid-translation translation" lang="es"><span title="">Es cierto que la redacción del mensaje de error es un poco extraña.</span> <span title="">El "parámetro formal" es una forma elegante de decir "argumento de función".</span> <span title="">Y usamos la palabra "malformada" porque todos los ingenieros de Firefox son grandes admiradores de las novelas de terror góticas del siglo XIX.</span></span></p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Casos_no_validos">Casos no validos</h3> + +<pre class="brush: js example-bad">var f = Function('x y', 'return x + y;'); +// SyntaxError (<span class="tlid-translation translation" lang="es"><span title="">Falta una coma</span></span>) + +var f = Function('x,', 'return x;'); +// SyntaxError (Coma extraña) + +var f = Function(37, "alert('OK')"); +// SyntaxError (Números no pueden ser nombres de argumentos) +</pre> + +<h3 id="Casos_validos">Casos validos</h3> + +<pre class="brush: js example-good">var f = Function('x, y', 'return x + y;'); // Correctamente puntuado + +var f = Function('x', 'return x;'); + +// Si puede, evite usar Function - Esto es mucho más rápido +var f = function(x) { return x; }; +</pre> + +<h2 id="Ver_tambien">Ver tambien</h2> + +<ul> + <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function">Function()</a></code></li> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions">Sobre functions</a></li> + <li><a href="https://www.gutenberg.org/ebooks/84"><em>Frankenstein</em> por Mary Wollstonecraft Shelley, texto completo en línea</a> <span class="tlid-translation translation" lang="es"><span title="">("Maldito (aunque me maldiga a mí mismo) ¡sé las manos que te formaron! Me has hecho miserable más allá de toda expresión. No me has dejado ningún poder para considerar si soy justo para ti o no. ¡Fuera! Aléjame de la vista de tu</span> <span title="">forma detestada ")</span></span></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/missing_curly_after_property_list/index.html b/files/es/web/javascript/reference/errors/missing_curly_after_property_list/index.html new file mode 100644 index 0000000000..b846b70c9f --- /dev/null +++ b/files/es/web/javascript/reference/errors/missing_curly_after_property_list/index.html @@ -0,0 +1,47 @@ +--- +title: 'SyntaxError: missing } after property list' +slug: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list +translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">SyntaxError: missing } after property list +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("SyntaxError")}}</p> + +<h2 id="¿Que_estuvo_mal">¿Que estuvo mal?</h2> + +<p>Es un error de sinaxis en algún lugar en el <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer">object initializer</a>. Prodría provocarse debido a la falta de una llave, pero, por ejemplo tambien por falta de alguna coma. Tambien verifique si alguna llave o parentesis se encuentra en el orden correcto. Indentar o darle un buen formato al codido puede ayudarlo a observar mejor el error.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Olvido_de_coma">Olvido de coma</h3> + +<p>Algunas veces, hace faltan las comas en codigo inicial del proyecto, he aquí un ejemplo:</p> + +<pre class="brush: js example-bad">var obj = { + a: 1, + b: { myProp: 2 } + c: 3 +}; +</pre> + +<p>La correción podría ser:</p> + +<pre class="brush: js example-good">var obj = { + a: 1, + b: { myProp: 2 }, + c: 3 +}; +</pre> + +<h2 id="Observe_Tambien">Observe Tambien</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer">Object initializer</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/missing_formal_parameter/index.html b/files/es/web/javascript/reference/errors/missing_formal_parameter/index.html new file mode 100644 index 0000000000..8ea7e3684a --- /dev/null +++ b/files/es/web/javascript/reference/errors/missing_formal_parameter/index.html @@ -0,0 +1,75 @@ +--- +title: 'SyntaxError: missing formal parameter' +slug: Web/JavaScript/Reference/Errors/Missing_formal_parameter +translation_of: Web/JavaScript/Reference/Errors/Missing_formal_parameter +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">SyntaxError: missing formal parameter (Firefox) +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("SyntaxError")}}</p> + +<h2 id="¿Que_es_lo_que_fue_mal">¿Que es lo que fue mal?</h2> + +<p>"Formal parameter" es una forma adornada de decir "parámetro de función". Tu declaración de funcion carece de parámetros válidos. En la declaración de la función, los parámetros deben ser {{Glossary("Identifier", "identifiers")}}, no ningún valor cómo números, cadenas, o objetos. Declarar las funciones y invocarlas son dos pasos distindos. La declaración sólo requiere identificador/es. Es en la invocación que asignas los valores.</p> + +<p>En {{glossary("JavaScript")}}, los indentificadosres sólo pueden contener carácteres alfanuméricos (o "$" y "_"), no pueden comenzar por número. Un identificador difiere de una <strong>cadena</strong> en que la cadena son datos, mientras que lo primero es parte del código.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<p>Los parámetros de función deben ser identificadores cuando creas la función. Todas estas declaraciones fallan, ya que proveen parámetros:</p> + +<pre class="brush: js example-bad highlight:[1,6,11]">function square(3) { + return number * number; +}; +// SyntaxError: missing formal parameter + +function greet("Howdy") { + return greeting; +}; +// SyntaxError: missing formal parameter + +function log({ obj: "value"}) { + console.log(arg) +}; +// SyntaxError: missing formal parameter +</pre> + +<p>Necesitarás usar identificadores en las funciones:</p> + +<pre class="brush: js example-good highlight:[1,5,9]">function square(number) { + return number * number; +}; + +function greet(greeting) { + return greeting; +}; + +function log(arg) { + console.log(arg) +};</pre> + +<p>Entonces podrás invocarlas con argumentos a tu gusto:</p> + +<pre class="brush: js">square(2); // 4 + +greet("Howdy"); // "Howdy" + +log({obj: "value"}); // Object { obj: "value" } +</pre> + +<h2 id="También_interesante">También interesante</h2> + +<ul> + <li>Otros errores relacionados con parámetros formales: + <ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Errors/Malformed_formal_parameter">SyntaxError: Malformed formal parameter</a></li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Errors/Redeclared_parameter">SyntaxError: redeclaration of formal parameter "x"</a></li> + </ul> + </li> +</ul> diff --git a/files/es/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html b/files/es/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html new file mode 100644 index 0000000000..4b72369e87 --- /dev/null +++ b/files/es/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html @@ -0,0 +1,51 @@ +--- +title: 'SyntaxError: missing ) after argument list' +slug: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list +translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">SyntaxError: missing ) after argument list +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("SyntaxError")}}.</p> + +<h2 id="¿Cuál_es_el_problema">¿Cuál es el problema?</h2> + +<p>Hay un error en cómo la función es llamada. Esto puede ser un typo, la falta de un operador, o un string no escapado, por ejemplo.</p> + +<h2 id="Ejemplo">Ejemplo</h2> + +<p>Debido a que no se encuentra el operador "<code>+</code>" para concatenar el string, JavaScript espera que el argumento de la función <code>log</code> sea solo <code>"PI: "</code>. En tal caso, debería terminar con el paréntesis de cierre.</p> + +<pre class="brush: js example-bad">console.log('PI: ' Math.PI); +// SyntaxError: missing ) after argument list +</pre> + +<p>Puedes corregir la llamada del <code>log</code>, agregando el operador "<code>+</code>":</p> + +<pre class="brush: js example-good">console.log('PI: ' + Math.PI); +// "PI: 3.141592653589793"</pre> + + + +<h3 id="Strings_sin_cierre">Strings sin cierre</h3> + +<pre class="brush: js example-bad">console.log('"Java" + "Script" = \"' + 'Java' + 'Script\"); +// SyntaxError: missing ) after argument list +</pre> + +<p>Aquí JavaScript piensa que tienes <code>);</code> dentro del string y lo ignora, y termina no sabiendo que quisiste utilizar <code>);</code> para cerrar la función <code>console.log</code>. Para solucionar esto, podemos poner un <code>'</code> después del string "Script":</p> + +<pre class="brush: js example-good">console.log('"Java" + "Script" = \"' + 'Java' + 'Script\"'); +// '"Java" + "Script" = "JavaScript"'</pre> + +<h2 id="Véase_también">Véase también</h2> + +<ul> + <li><a href="/es/docs/Web/JavaScript/Guide/Funciones">Funciones</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/more_arguments_needed/index.html b/files/es/web/javascript/reference/errors/more_arguments_needed/index.html new file mode 100644 index 0000000000..fd392c5801 --- /dev/null +++ b/files/es/web/javascript/reference/errors/more_arguments_needed/index.html @@ -0,0 +1,51 @@ +--- +title: 'TypeError: More arguments needed' +slug: Web/JavaScript/Reference/Errors/More_arguments_needed +tags: + - Errors + - JavaScript + - Tipo de Error + - TypeError + - errores +translation_of: Web/JavaScript/Reference/Errors/More_arguments_needed +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensage">Mensage</h2> + +<pre class="syntaxbox">TypeError: argument is not an Object and is not null (Edge) +TypeError: Object.create necesita al menos 1 argumento, pero solo only 0 fueron aprovadas. +TypeError: Object.setPrototypeOf necesita al menos 2 argumentos, pero solo 0 fueron aprovados +TypeError: Object.defineProperties requires at least 1 argument, but only 0 were passed +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("TypeError")}}.</p> + +<h2 id="¿Qué_fué_mal">¿Qué fué mal?</h2> + +<p>Hay un error con que una funcion es llamada. Más argumentos necesitan ser dados.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<p>El método {{jsxref("Object.create()")}} necesita al menos un argumento y el método {{jsxref("Object.setPrototypeOf()")}} necesita al menos 2 argumentos.</p> + +<pre class="brush: js example-bad">var obj = Object.create(); +// TypeError: Object.create necesita al menos 1 argumento, pero ninguno fue aprovad + +var obj = Object.setPrototypeOf({}); +// TypeError: Object.setPrototypeOf requires at least 2 arguments, but only 1 were passed +</pre> + +<p>Puedes arreglar esto configurando {{jsxref("null")}} como el prototipo, por ejemplo:</p> + +<pre class="brush: js example-good">var obj = Object.create(null); + +var obj = Object.setPrototypeOf({}, null);</pre> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions">Funciones</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/no_variable_name/index.html b/files/es/web/javascript/reference/errors/no_variable_name/index.html new file mode 100644 index 0000000000..4ff3b8090e --- /dev/null +++ b/files/es/web/javascript/reference/errors/no_variable_name/index.html @@ -0,0 +1,83 @@ +--- +title: 'SyntaxError: missing variable name' +slug: Web/JavaScript/Reference/Errors/No_variable_name +tags: + - Error + - Error de sintaxis + - errores +translation_of: Web/JavaScript/Reference/Errors/No_variable_name +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">SyntaxError: missing variable name (Firefox) +SyntaxError: Unexpected token = (Chrome)</pre> + +<h2 id="Error">Error </h2> + +<p>{{jsxref("SyntaxError")}}</p> + +<h2 id="¿Qué_anda_mal">¿Qué anda mal?</h2> + +<p>Una variable no tiene nombre. Esto es un error recurrente en el código. Probablemente una coma está mal colocada en algún lugar o nombraste mal una variable. Completamente entendible. Nombrar cosas es difícil.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Missing_a_variable_name">Missing a variable name</h3> + +<pre class="brush: js example-bad">var = "foo"; +</pre> + +<p>Es bueno nombrar buenas variables. Todos hemos estado así.</p> + +<pre class="brush: js example-good">var ohGodWhy = "foo";</pre> + +<h3 id="Palabras_reservadas_no_pueden_ser_nombre_de_variables">Palabras reservadas no pueden ser nombre de variables</h3> + +<p>Hay algunas palabras que son reservadas. No puedes usarlas para nombrar variables, lo siento :(</p> + +<pre class="brush: js example-bad">var debugger = "whoop"; +// SyntaxError: missing variable name +</pre> + +<h3 id="Declarar_multiples_variables">Declarar multiples variables</h3> + +<p>Toma especial atención a las comas cuando declaras multiples variables. ¿Hay un exceso de comas? ¿Accidentalmente añadiste comas en vez de punto y coma? </p> + +<pre class="brush: js example-bad">var x, y = "foo", +var x, = "foo" + +var first = document.getElementById('one'), +var second = document.getElementById('two'), + +// SyntaxError: missing variable name +</pre> + +<p>La versión arreglada:</p> + +<pre class="brush: js example-good">var x, y = "foo"; +var x = "foo"; + +var first = document.getElementById('one'); +var second = document.getElementById('two');</pre> + +<h3 id="Arrays">Arrays</h3> + +<p>{{jsxref("Array")}} literales en JavaScript necesitan corchetes alrededor de los valores. Esto no funciona:</p> + +<pre class="brush: js example-bad">var arr = 1,2,3,4,5; +// SyntaxError: missing variable name +</pre> + +<p>Esto es correcto:</p> + +<pre class="brush: js example-good">var arr = [1,2,3,4,5];</pre> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li><a href="http://wiki.c2.com/?GoodVariableNames">Good variable names</a></li> + <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/var">var</a></code></li> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Declarations">Variable declarations in the JavaScript Guide</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/not_a_codepoint/index.html b/files/es/web/javascript/reference/errors/not_a_codepoint/index.html new file mode 100644 index 0000000000..0c89773f6b --- /dev/null +++ b/files/es/web/javascript/reference/errors/not_a_codepoint/index.html @@ -0,0 +1,51 @@ +--- +title: 'RangeError: argument is not a valid code point' +slug: Web/JavaScript/Reference/Errors/Not_a_codepoint +translation_of: Web/JavaScript/Reference/Errors/Not_a_codepoint +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Message">Message</h2> + +<pre class="syntaxbox">RangeError: {0} is not a valid code point (Firefox) +RangeError: Invalid code point {0} (Chrome) +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("RangeError")}}</p> + +<h2 id="¿Qué_estuvo_mal">¿Qué estuvo mal?</h2> + +<p>El metodo {{jsxref("String.fromCodePoint()")}} acepta solamente <em><strong>code point</strong></em> validos.</p> + +<p>Un <a href="https://en.wikipedia.org/wiki/Code_point">code point</a> es un valor en el conjunto de caracteres <a href="/es/docs/">Unicode</a>; esto es, un rango de enteros que va desde <code>0</code> a <code>0x10FFFF</code>.</p> + +<p>Usando valores {{jsxref("NaN")}}, enteros negativos (<code>-1</code>), no enteros (<code>3.14</code>), o valores mayores a <code>0x10FFFF</code> (<code>1114111</code>) no trabajarian con este metodo.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Casos_invalidos">Casos invalidos</h3> + +<pre class="brush: js example-bad">String.fromCodePoint('_'); // RangeError +String.fromCodePoint(Infinity); // RangeError +String.fromCodePoint(-1); // RangeError +String.fromCodePoint(3.14); // RangeError +String.fromCodePoint(3e-2); // RangeError +String.fromCodePoint(NaN); // RangeError</pre> + +<h3 id="Casos_validos">Casos validos</h3> + +<pre class="brush: js example-good">String.fromCodePoint(42); // "*" +String.fromCodePoint(65, 90); // "AZ" +String.fromCodePoint(0x404); // "\u0404" +String.fromCodePoint(0x2F804); // "\uD87E\uDC04" +String.fromCodePoint(194564); // "\uD87E\uDC04" +String.fromCodePoint(0x1D306, 0x61, 0x1D307) // "\uD834\uDF06a\uD834\uDF07" +</pre> + +<h2 id="Observe_tambien">Observe tambien</h2> + +<ul> + <li>{{jsxref("String.fromCodePoint()")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/not_a_function/index.html b/files/es/web/javascript/reference/errors/not_a_function/index.html new file mode 100644 index 0000000000..7d1987cc64 --- /dev/null +++ b/files/es/web/javascript/reference/errors/not_a_function/index.html @@ -0,0 +1,124 @@ +--- +title: 'TypeError: "x" is not a function' +slug: Web/JavaScript/Reference/Errors/Not_a_function +tags: + - Error + - ErrorDeTipo + - JavaScript + - errores +translation_of: Web/JavaScript/Reference/Errors/Not_a_function +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">TypeError: "x" is not a function +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("TypeError")}}.</p> + +<h2 id="¿Qué_salió_mal">¿Qué salió mal?</h2> + +<p>Se ha intentado llamar a un elemento o valor como si fuera una función, pero no lo era. El código esperaba que hubiera una función implementada, pero no la ha encontrado.</p> + +<p>¿Está bien escrito el nombre de la función?¿El objeto sobre el que estás haciendo la llamada tiene ese método implementado realmente? Por ejemplo, los objetos tipo Array tienen implementada la función map, pero el resto de tipos no la tienen.</p> + +<p>Hay muchas funciones propias de Javascript (built-in) que necesitan una función de callback, por lo que tienes que pasar esa función como parámetro para que estos métodos funcionen correctamente.</p> + +<ul> + <li>Cuando se usen objetos {{jsxref("Array")}} o {{jsxref("TypedArray")}}: + <ul> + <li>{{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.forEach()")}}, {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.filter()")}}, {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}}, {{jsxref("Array.prototype.find()")}}</li> + </ul> + </li> + <li>Cuando se usen objetos {{jsxref("Map")}} y {{jsxref("Set")}}: + <ul> + <li>{{jsxref("Map.prototype.forEach()")}} y {{jsxref("Set.prototype.forEach()")}}</li> + </ul> + </li> +</ul> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Nombre_de_la_función_mal_escrito">Nombre de la función mal escrito</h3> + +<p>En este caso, que ocurre con mucha frecuencia, el nombre de la función está mal escrito:</p> + +<pre class="brush: js example-bad">var x = document.getElementByID("foo"); +// TypeError: document.getElementByID is not a function +</pre> + +<p>El nombre correcto de la función es <code>getElementByI<strong>d</strong></code>:</p> + +<pre class="brush: js example-good">var x = document.getElementById("foo"); +</pre> + +<h3 id="Función_llamada_en_el_objeto_equivocado">Función llamada en el objeto equivocado</h3> + +<p>Puede que el método que queramos usar no esté implementado en el tipo de objeto que estemos usado. En este ejemplo, queremos usar el método map, que recibe una función de callback como argumento, pero solo lo tienen los objetos {{jsxref("Array")}}.</p> + +<pre class="brush: js example-bad">var obj = { a: 13, b: 37, c: 42 }; + +obj.map(function(num) { + return num * 2; +}); + +// TypeError: obj.map is not a function</pre> + +<p>Como obj es un diccionario (parejas clave/valor), no tiene método map y se produce el error. Para evitarlo, hay que usar un {{jsxref("Array")}}:</p> + +<pre class="brush: js example-good">var numeros = [1, 4, 9]; + +numeros.map(function(num) { + return num * 2; +}); + +// Array [ 2, 8, 18 ] +</pre> + +<h3 id="La_función_comparte_un_nombre_con_una_propiedad_preexistente">La función comparte un nombre con una propiedad preexistente</h3> + +<p>A veces, al hacer una clase, puede tener una propiedad y una función con el mismo nombre. Al llamar a la función, el compilador piensa que la función deja de existir.</p> + +<pre class="brush: js example-bad">var Perro = function () { + this.edad = 11; + this.color = "negro"; + this.nombre = "Rafael"; + return this; +} + +Perro.prototype.nombre = function(nombre) { + this.nombre = nombre; + return this; +} + + +var miNuevoPerro = new Perro(); +miNuevoPerro.nombre("Lilly"); //Uncaught TypeError: myNewDog.name is not a function +</pre> + +<p>Utilice un nombre de propiedad diferente en su lugar:</p> + +<pre class="brush: js example-good">var Perro = function () { + this.edad = 11; + this.color = "negro"; + this.nombrePerro = "Rafael"; //Usando this.nombrePerro en vez de .nombre + return this; +} + +Perro.prototype.nombre = function(nombre) { + this.nombrePerro = nombre; + return this; +} + + +var miNuevoPerro = new Perro(); +miNuevoPerro.nombre("Lilly"); //Perro { edad: 11, color: 'negro', nombrePerro: 'Lilly' }</pre> + +<h2 id="Ve_también">Ve también</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions">Functions</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/not_defined/index.html b/files/es/web/javascript/reference/errors/not_defined/index.html new file mode 100644 index 0000000000..4166d131ca --- /dev/null +++ b/files/es/web/javascript/reference/errors/not_defined/index.html @@ -0,0 +1,67 @@ +--- +title: 'ReferenceError: "x" is not defined' +slug: Web/JavaScript/Reference/Errors/Not_defined +tags: + - Error + - JavaScript + - ReferenceError +translation_of: Web/JavaScript/Reference/Errors/Not_defined +--- +<div>{{jsSidebar("Errors")}}</div> + +<pre class="syntaxbox notranslate">ReferenceError: "x" no está definida.</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("ReferenceError")}}</p> + +<h2 id="¿Qué_está_mal">¿Qué está mal?</h2> + +<p>Hay una variable no existente que está siendo referida en algún lugar. Esta variable necesita ser declarada o se debe comprobar su disponibilidad en el {{Glossary("ámbito")}} actual del script.</p> + +<div class="note"> +<p><strong>Nota: </strong> Cuando una librería es cargada (como por ejemplo jQuery) asegúrese de que se haya cargado antes de intentar acceder a sus variables, como por ejemplo "$". Ponga la etiqueta {{HTMLElement("script")}}, que carga la librería antes del código que la utiliza.</p> +</div> + +<h2 id="Ejemplo">Ejemplo</h2> + +<h3 id="Variable_no_declarada">Variable no declarada</h3> + +<pre class="brush: js example-bad notranslate">foo.substring(1); // ReferenceError: foo no está declarada. +</pre> + +<p>La variable "foo" no está declarada en ninguna parte. La variable debe ser alguna cadena para que el método {{jsxref("String.prototype.substring()")}} funcione correctamente.</p> + +<pre class="brush: js example-good notranslate">var foo = "bar"; +foo.substring(1); // "ar"</pre> + +<h3 id="Contexto_erróneo">Contexto erróneo</h3> + +<p>Una variable necesita estar disponible en el contexto actual de ejecución. No se puede acceder a las variables definidas dentro de una <a href="/es/docs/Web/JavaScript/Referencia/Funciones">función</a> desde fuera de dicha función, debido a que la variable está definida solamente dentro de la función.</p> + +<pre class="brush: js example-bad notranslate">function numbers () { + var num1 = 2, + num2 = 3; + return num1 + num2; +} + +console.log(num1); // ReferenceError num1 sin definir.</pre> + +<p>Sin embargo, una función puede acceder a todas las variables y funciones definidas dentro del ámbito en la cual ha sido definida. Es decir, una función en el contexto global puede acceder a todas las variables definidas en el contexto global.</p> + +<pre class="brush: js example-good notranslate">var num1 = 2, + num2 = 3; + +function numbers () { + return num1 + num2; +} + +console.log(num1); // 2</pre> + +<h2 id="Temas_relacionados">Temas relacionados</h2> + +<ul> + <li>{{Glossary("Ámbito")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Declaring_variables">Guía; declarando variables en JavaScript</a></li> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions#Function_scope/en-US/docs/">Guía; contexto de la función en Java Script </a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/precision_range/index.html b/files/es/web/javascript/reference/errors/precision_range/index.html new file mode 100644 index 0000000000..22c37598ff --- /dev/null +++ b/files/es/web/javascript/reference/errors/precision_range/index.html @@ -0,0 +1,96 @@ +--- +title: 'RangeError: precision is out of range' +slug: Web/JavaScript/Reference/Errors/Precision_range +translation_of: Web/JavaScript/Reference/Errors/Precision_range +--- +<div>{{jsSidebar("Errors")}}</div> + +<p>The JavaScript exception "precision is out of range" occurs when a number that's outside of the range of 0 and 20 (or 21) was passed into <code>toFixed</code> or <code>toPrecision</code>.</p> + +<h2 id="Message">Message</h2> + +<pre class="syntaxbox notranslate">RangeError: The number of fractional digits is out of range (Edge) +RangeError: The precision is out of range (Edge) +RangeError: precision {0} out of range (Firefox) +RangeError: toExponential() argument must be between 0 and 20 (Chrome) +RangeError: toFixed() digits argument must be between 0 and 20 (Chrome) +RangeError: toPrecision() argument must be between 1 and 21 (Chrome) +</pre> + +<h2 id="Error_type">Error type</h2> + +<p>{{jsxref("RangeError")}}</p> + +<h2 id="Que_salió_mal">Que salió mal?</h2> + +<p>Fué un argumento preciso fuera de rango en uno de estos metodos:</p> + +<ul> + <li>{{jsxref("Number.prototype.toExponential()")}}</li> + <li>{{jsxref("Number.prototype.toFixed()")}}</li> + <li>{{jsxref("Number.prototype.toPrecision()")}}</li> +</ul> + +<p>El rango permitido para estos metodos usualmente esta entre 0 o 20 (o 21). De todas formas la <span><span>especificación</span></span> ECMAScript permite extender este rango.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Method</th> + <th scope="col">Firefox (SpiderMonkey)</th> + <th scope="col">Chrome, Opera (V8)</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{jsxref("Number.prototype.toExponential()")}}</td> + <td>0 to 100</td> + <td>0 to 20</td> + </tr> + <tr> + <td>{{jsxref("Number.prototype.toFixed()")}}</td> + <td>-20 to 100</td> + <td>0 to 20</td> + </tr> + <tr> + <td>{{jsxref("Number.prototype.toPrecision()")}}</td> + <td>1 to 100</td> + <td>1 to 21</td> + </tr> + </tbody> +</table> + +<h2 id="Examples">Examples</h2> + +<h3 id="Casos_no_validos">Casos no validos</h3> + +<pre class="brush: js example-bad notranslate">77.1234.toExponential(-1); // RangeError +77.1234.toExponential(101); // RangeError + +2.34.toFixed(-100); // RangeError +2.34.toFixed(1001); // RangeError + +1234.5.toPrecision(-1); // RangeError +1234.5.toPrecision(101); // RangeError +</pre> + +<h3 id="Casos_validos">Casos validos</h3> + +<pre class="brush: js example-good notranslate">77.1234.toExponential(4); // 7.7123e+1 +77.1234.toExponential(2); // 7.71e+1 + +2.34.toFixed(1); // 2.3 +2.35.toFixed(1); // 2.4 (note that it rounds up in this case) + +5.123456.toPrecision(5); // 5.1235 +5.123456.toPrecision(2); // 5.1 +5.123456.toPrecision(1); // 5 +</pre> + +<h2 id="También_te_puede_interesar">También te puede interesar:</h2> + +<ul> + <li>{{jsxref("Number.prototype.toExponential()")}}</li> + <li>{{jsxref("Number.prototype.toFixed()")}}</li> + <li>{{jsxref("Number.prototype.toPrecision()")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/property_access_denied/index.html b/files/es/web/javascript/reference/errors/property_access_denied/index.html new file mode 100644 index 0000000000..1df56e4c5b --- /dev/null +++ b/files/es/web/javascript/reference/errors/property_access_denied/index.html @@ -0,0 +1,46 @@ +--- +title: 'Error: Permission denied to access property "x"' +slug: Web/JavaScript/Reference/Errors/Property_access_denied +tags: + - Error + - JavaScript + - Seguridad + - errores +translation_of: Web/JavaScript/Reference/Errors/Property_access_denied +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">Error: Permission denied to access property "x"</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("Error")}}.</p> + +<h2 id="¿Cuál_es_el_problema">¿Cuál es el problema?</h2> + +<p><span class="seoSummary">Se ha intentado acceder a un objeto al cual no tienes permiso. Probablemente es un elemento {{HTMLElement("iframe")}} cargado de otro dominio en el cual violaste la <a href="/en-US/docs/Web/Security/Same-origin_policy">política del mismo origen</a>.</span></p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"></iframe> + <script> + onload = function() { + console.log(frames[0].document); + // Error: Permission denied to access property "document" + } + </script> + </head> + <body></body> +</html></pre> + +<h2 id="Véase_también">Véase también</h2> + +<ul> + <li>{{HTMLElement("iframe")}}</li> + <li><span class="seoSummary"><a href="/en-US/docs/Web/Security/Same-origin_policy">Política del mismo origen</a></span></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/stmt_after_return/index.html b/files/es/web/javascript/reference/errors/stmt_after_return/index.html new file mode 100644 index 0000000000..1dd135c3ec --- /dev/null +++ b/files/es/web/javascript/reference/errors/stmt_after_return/index.html @@ -0,0 +1,74 @@ +--- +title: 'Advertencia: codigo inaccesible despues de sentencia de retorno' +slug: Web/JavaScript/Reference/Errors/Stmt_after_return +translation_of: Web/JavaScript/Reference/Errors/Stmt_after_return +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">Advertencia: código inaccesible después de sentencia de retorno (Firefox) +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>Advertencia</p> + +<h2 id="Qué_va_mal">Qué va mal?</h2> + +<p>Código inalcanzable después de una sentencia de retorno puede ocurrir en estas situaciones:</p> + +<ul> + <li>Cuando se usa una expresión despues de una sentencia {{jsxref("Statements/return", "return")}}</li> + <li>Cuando se usa una sentencia de retorno sin punto y coma pero inluye una expresion directamente despues.</li> +</ul> + +<p>Cuando una expresion existe después de una sentencia de retorno válida, se da una advertencia para indicar que el código después de la sentencia de retorno es inalcanzable, lo que significa que nunca será ejecutado.</p> + +<p>¿Porqué deberia tener un punto y coma despues de la sentencia de retorno? En el caso de sentencias sin punto y coma, estas pueden no ser claras, puede que el desarrollador intentara retornar el resultado de la sentencia en la siguiente línea, o detener la ejecución y retornar. La advertencia indica que hay una ambiguedad en la forma en la que la sentencia de retorno está escrita.</p> + +<p>Advertencias no seran mostradas por retornos sin punto y coma si la sentencia lo sigue:</p> + +<ul> + <li>{{jsxref("Statements/throw", "throw")}}</li> + <li>{{jsxref("Statements/break", "break")}}</li> + <li>{{jsxref("Statements/var", "var")}}</li> + <li>{{jsxref("Statements/function", "function")}}</li> +</ul> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Casos_invalidos">Casos invalidos</h3> + +<pre class="brush: js example-bad">function f() { + var x = 3; + x += 4; + return x; // return sale de la funcion inmediatamente + x -= 3; // esta linea nunca se ejecutara ; es inalcanzable +} + +function f() { + return // es tratado como `return;` + 3 + 4; //la funcion regresa, y esta linea nunca es alcanzada +} +</pre> + +<h3 id="Casos_validos">Casos validos</h3> + +<pre class="brush: js example-good">function f() { + var x = 3; + x += 4; + x -= 3; + return x; // OK: regreso despues de todas las otras declaraciones +} + +function f() { + return 3 + 4 // OK: sin punto y coma regresa la expresion en la misma linea +} +</pre> + +<h2 id="Ve_tambien">Ve tambien</h2> + +<ul> + <li>{{jsxref("Statements/return", "Automatic Semicolon Insertion", "#Automatic_Semicolon_Insertion", 1)}}</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/strict_y_parámetros_complejos/index.html b/files/es/web/javascript/reference/errors/strict_y_parámetros_complejos/index.html new file mode 100644 index 0000000000..2ca6ef8de4 --- /dev/null +++ b/files/es/web/javascript/reference/errors/strict_y_parámetros_complejos/index.html @@ -0,0 +1,117 @@ +--- +title: 'SyntaxError: "use strict" no permitida en función con parámetros complejos' +slug: Web/JavaScript/Reference/Errors/Strict_y_parámetros_complejos +tags: + - Error + - JavaScript + - TypeError + - errores +translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params +--- +<div>{{jsSidebar("Errors", "Errores")}}</div> + +<p>La excepción de JavaScript: "<code>'use strict' no permitida en función</code>" ocurre cuando se usa una directiva <code>"use strict"</code> en la parte superior de una función con {{jsxref("Functions/Default_parameters", "parámetros predeterminados", "", 1)}}, {{jsxref("Functions/rest_parameters", "parámetros rest", "", 1)}} o {{jsxref("Operators/Destructuring_assignment" , "Desestructuración de parámetros", "", 1)}}.</p> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox notranslate">Edge: +No se puede aplicar el modo estricto en funciones con una lista de parámetros complejos + +Firefox: +SyntaxError: "use strict" no permitido en la función con parámetro predeterminado +SyntaxError: "use strict" no permitido en la función con parámetro rest +SyntaxError: "use strict" no permitido en la función con parámetro de desestructuración + +Chrome: +SyntaxError: directiva ilegal 'use strict' en función con una lista de parámetros complejos +</pre> + +<h2 id="Tipo_Error">Tipo <code>Error</code></h2> + +<p>{{jsxref("SyntaxError")}}.</p> + +<h2 id="¿Qué_salió_mal">¿Qué salió mal?</h2> + +<p>Se escribió una directiva <code>"use strict"</code> en la parte superior de una función que tiene uno de los siguientes parámetros:</p> + +<ul> + <li>{{jsxref("Functions/Default_parameters", "Parámetros predeterminados", "", 1)}}</li> + <li>{{jsxref("Functions/rest_parameters", "Parámetros rest", "", 1)}}</li> + <li>{{jsxref("Operators/Destructuring_assignment", "Desestructuración de parámetros", "", 1)}}</li> +</ul> + +<p>No está permitida una directiva <code>"use strict"</code> en la parte superior de dichas funciones según la especificación ECMAScript.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Declaración_de_función">Declaración de función</h3> + +<p>En este caso, la función <code>sum</code> tiene los parámetros predeterminados <code>a = 1</code> y <code>b = 2</code>:</p> + +<pre class="brush: js example-bad notranslate">function sum(a = 1, b = 2) { + SyntaxError: 'use strict' no permitida en la función con parámetros predeterminados + 'use strict'; + return a + b; +} +</pre> + +<p>Si la función debe estar en <a href="/es/docs/Web/JavaScript/Reference/Strict_mode">modo estricto</a>, y todo el script o la función adjunta también está bien que esté en modo estricto, puedes mover la directiva <code>"use strict"</code> fuera de la función:</p> + +<pre class="brush: js example-good notranslate">'use strict'; +function sum(a = 1, b = 2) { + return a + b; +} +</pre> + +<h3 id="Expresión_Function">Expresión <code>Function</code></h3> + +<p>Una expresión <code>function</code> puede usar otra solución alternativa:</p> + +<pre class="brush: js example-bad notranslate">var sum = function sum([a, b]) { + // SyntaxError: "use strict" no permitido en función con parámetros de desestructuración + 'use strict'; + return a + b; +}; +</pre> + +<p>Esta se puede convertir a la siguiente expresión:</p> + +<pre class="brush: js example-good notranslate">var sum = (function() { + 'use strict'; + return function sum([a, b]) { + return a + b; + }; +})(); +</pre> + +<h3 id="Función_de_flecha">Función de flecha</h3> + +<p>Si una función de flecha necesita acceder a la variable <code>this</code>, puedes usar la función de flecha como función circundante:</p> + +<pre class="brush: js example-bad notranslate">var callback = (...args) => { + SyntaxError: "use strict" no permitido en la función con parámetro rest + 'use strict'; + return this.run(args); +}; +</pre> + +<p>Esta se puede convertir a la siguiente expresión:</p> + +<pre class="brush: js example-good notranslate">var callback = (() => { + 'use strict'; + return (...args) => { + return this.run(args); + }; +})(); +</pre> + +<h2 id="Ve_también">Ve también</h2> + +<ul> + <li>{{jsxref("Strict_mode", "Modo estricto", "", 1)}}</li> + <li>{{jsxref("Statements/function", "Declaración de función", "", 1)}}</li> + <li>{{jsxref("Operators/function", "Expresión function", "", 1)}}</li> + <li>{{jsxref("Functions/Default_parameters", "Parámetros predeterminados", "", 1)}}</li> + <li>{{jsxref("Functions/rest_parameters", "Parámetros rest", "", 1)}}</li> + <li>{{jsxref("Operators/Destructuring_assignment", "Desestructuración de parámetros", "", 1)}}</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/too_much_recursion/index.html b/files/es/web/javascript/reference/errors/too_much_recursion/index.html new file mode 100644 index 0000000000..91ac6d7973 --- /dev/null +++ b/files/es/web/javascript/reference/errors/too_much_recursion/index.html @@ -0,0 +1,57 @@ +--- +title: 'InternalError: too much recursion' +slug: Web/JavaScript/Reference/Errors/Too_much_recursion +tags: + - Error + - InternalError + - JavaScript + - Recursiva + - Recursividad + - Recursión(2) +translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">InternalError: too much recursion +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("InternalError")}}.</p> + +<h2 id="¿Qué_ha_ido_mal">¿Qué ha ido mal?</h2> + +<p>Una función que se llama a sí misma es una función recursiva. Podemos decir que la recursión es análoga a un bucle. Ambos ejecutan el mismo código varias veces y ambos requieren de una condición de fin (para evitar un bucle infinito o recursión infinita). Cuando hay recursión infinita o mucha recursión, JavaScript lanza este error.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<p>Esta función recursiva se ejecuta 10 veces, debido a la condición de salida. </p> + +<pre class="brush: js">function loop(x) { + if (x >= 10) // "x >= 10" es la condición de salida + return; + // hacer cosas + loop(x + 1); // llamada recursiva +} +loop(0);</pre> + +<p>Si establecemos esta condición para un valor muy alto, no funcionará:</p> + +<pre class="brush: js example-bad">function loop(x) { + if (x >= 1000000000000) + return; + // hacer cosas + loop(x + 1); +} +loop(0); + +// InternalError: too much recursion (demasiada recursión)</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{Glossary("Recursion")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions#Recursion">Recursive functions</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/undefined_prop/index.html b/files/es/web/javascript/reference/errors/undefined_prop/index.html new file mode 100644 index 0000000000..96f7e050de --- /dev/null +++ b/files/es/web/javascript/reference/errors/undefined_prop/index.html @@ -0,0 +1,63 @@ +--- +title: 'ReferenceError: reference to undefined property "x"' +slug: Web/JavaScript/Reference/Errors/Undefined_prop +tags: + - JavaScript + - Modo estricto + - ReferenceError + - errores +translation_of: Web/JavaScript/Reference/Errors/Undefined_prop +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">ReferenceError: reference to undefined property "x" (Firefox) +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>Advertencia {{jsxref("ReferenceError")}} únicamente en <a href="/es/docs/Web/JavaScript/Referencia/Modo_estricto">modo estricto</a>.</p> + +<h2 id="¿Qué_salió_mal">¿Qué salió mal?</h2> + +<p>El script intentó acceder a una propiedad no definida en un objeto. Hay dos formas de acceder a las propiedades; vea la página <a href="/es/docs/Web/JavaScript/Referencia/Operadores/Miembros">operadores de miembros</a> para aprender más sobre ellas.</p> + +<p>Los errores sobre referencias a propiedades no definidas ocurren únicamente en el <a href="/es/docs/Web/JavaScript/Referencia/Modo_estricto">modo de código estricto</a>. En el modo no estricto, estos intentos de obtener propiedades no definidas son silenciosamente ignorados.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Casos_inválidos">Casos inválidos</h3> + +<p>En este caso, la propiedad <code>bar</code> no está definida, produciéndose un <code>ReferenceError</code>.</p> + +<pre class="brush: js example-bad">'use strict'; + +var foo = {}; +foo.bar; // ReferenceError: reference to undefined property "bar" +</pre> + +<h3 id="Casos_válidos">Casos válidos</h3> + +<p>Para evitar este error, es necesario ya sea definir la propiedad <code>bar</code> en el objeto o verificar su existencia antes de leerla; una manera de hacerlo es usar el método {{jsxref("Object.prototype.hasOwnProperty()")}}, como en el siguiente ejemplo:</p> + +<pre class="brush: js example-good">'use strict'; + +var foo = {}; + +// Definir la propiedad bar + +foo.bar = 'luna'; +console.log(foo.bar); // "luna" + +// Prueba para asegurarse que bar existe antes de leerla + +if (foo.hasOwnProperty('bar')) { + console.log(foo.bar); +}</pre> + +<h2 id="Vea_también">Vea también</h2> + +<ul> + <li><a href="/es/docs/Web/JavaScript/Referencia/Modo_estricto">Modo estricto</a></li> +</ul> diff --git a/files/es/web/javascript/reference/errors/unexpected_token/index.html b/files/es/web/javascript/reference/errors/unexpected_token/index.html new file mode 100644 index 0000000000..02cad6eb2f --- /dev/null +++ b/files/es/web/javascript/reference/errors/unexpected_token/index.html @@ -0,0 +1,50 @@ +--- +title: 'SyntaxError: Unexpected token' +slug: Web/JavaScript/Reference/Errors/Unexpected_token +tags: + - JavaScript + - SyntaxError + - errores +translation_of: Web/JavaScript/Reference/Errors/Unexpected_token +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">SyntaxError: expected expression, got "x" +SyntaxError: expected property name, got "x" +SyntaxError: expected target, got "x" +SyntaxError: expected rest argument name, got "x" +SyntaxError: expected closing parenthesis, got "x" +SyntaxError: expected '=>' after argument list, got "x" +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("SyntaxError")}}</p> + +<h2 id="¿Que_significa_el_error">¿Que significa el error?</h2> + +<p>Se esperaba un constructor específico de JavaScript pero se recibió algo diferente. Puede ser un simple error de tipeo.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Se_espera_expresión">Se espera expresión</h3> + +<p>Cuando se llama a una función, no se permiten comas al final de los argumentos. JavaScript espera un argumento que puede ser en realidad cualquier tipo de expresión.</p> + +<pre class="brush: js example-bad">Math.max(2, 42,); +// SyntaxError: expected expression, got ')' +</pre> + +<p>El error se corrije omitiendo la coma o agregando otro argumento:</p> + +<pre class="brush: js example-good">Math.max(2, 42); +Math.max(2, 42, 13 + 37); +</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("Math.max()")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/errors/unexpected_type/index.html b/files/es/web/javascript/reference/errors/unexpected_type/index.html new file mode 100644 index 0000000000..a53f74c95b --- /dev/null +++ b/files/es/web/javascript/reference/errors/unexpected_type/index.html @@ -0,0 +1,61 @@ +--- +title: 'TypeError: "x" is (not) "y"' +slug: Web/JavaScript/Reference/Errors/Unexpected_type +translation_of: Web/JavaScript/Reference/Errors/Unexpected_type +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Mensaje">Mensaje</h2> + +<pre class="syntaxbox">TypeError: "x" is (not) "y" + +Examples: +TypeError: "x" is undefined +TypeError: "x" is null +TypeError: "undefined" is not an object +TypeError: "x" is not an object or null +TypeError: "x" is not a symbol +</pre> + +<h2 id="Tipo_de_error">Tipo de error</h2> + +<p>{{jsxref("TypeError")}}.</p> + +<h2 id="¿Qué_salió_mal">¿Qué salió mal?</h2> + +<p>Tipo inesperado. Esto ocurre amenudo con valores {{jsxref("undefined")}} o {{jsxref("null")}} .</p> + +<p>Además, ciertos métodos, como {{jsxref ("Object.create ()")}} o {{jsxref("Symbol.keyFor()")}}, requieren de un tipo específico, que debe ser proporcionado, ejemplos</p> + +<h3 id="Casos_inválidos">Casos inválidos</h3> + +<pre class="brush: js example-bad">// undefined and null cases on which the substring method won't work +var foo = undefined; +foo.substring(1); // TypeError: foo is undefined + +var foo = null; +foo.substring(1); // TypeError: foo is null + + +// Certain methods might require a specific type +var foo = {} +Symbol.keyFor(foo); // TypeError: foo is not a symbol + +var foo = 'bar' +Object.create(foo); // TypeError: "foo" is not an object or null +</pre> + +<h3 id="Cómo_solucionar_el_problema">Cómo solucionar el problema</h3> + +<p>Para fijar un puntero nulo a indefinidos o valores nulos, puede utilizar el operador typeof, por ejemplo</p> + +<pre class="brush: js">if (typeof foo !== 'undefined') { + // Ahora sabemos que foo está definido, ahora podemos continuar. +}</pre> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li>{{jsxref("undefined")}}</li> + <li>{{jsxref("null")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/global_objects/proxy/handler/getownpropertydescriptor/index.html b/files/es/web/javascript/reference/global_objects/proxy/handler/getownpropertydescriptor/index.html new file mode 100644 index 0000000000..6c050f7f0a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/proxy/handler/getownpropertydescriptor/index.html @@ -0,0 +1,129 @@ +--- +title: handler.getOwnPropertyDescriptor() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor +tags: + - ECMAScript 2015 + - JavaScript + - Proxy + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor +--- +<div>{{JSRef}}</div> + +<div>El método <strong><code>handler.getOwnPropertyDescriptor()</code></strong> captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.</div> + +<h2 id="Sintaxis">Sintaxis</h2> + +<pre class="brush: js">var p = new Proxy(target, { + getOwnPropertyDescriptor: function(target, prop) { + } +}); +</pre> + +<h3 id="Parámetros">Parámetros</h3> + +<p>El método <code>getOwnPropertyDescriptor</code> recibe los siguiente parámetros. <code>this</code> está asociado al handler del proxy.</p> + +<dl> + <dt><code>target</code></dt> + <dd>El objeto destino.</dd> + <dt><code>prop</code></dt> + <dd>El nombre de la propiedad cuya descripción ha de ser devuelta.</dd> +</dl> + +<h3 id="Valor_Devuelto">Valor Devuelto</h3> + +<p>El método <code>getOwnPropertyDescriptor</code> debe devolver un objeto o <code>undefined</code>.</p> + +<h2 id="Descripción">Descripción</h2> + +<p>El método <code><strong>handler.getOwnPropertyDescriptor()</strong></code> captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.</p> + +<h3 id="Intercepciones">Intercepciones</h3> + +<p>Este método intercepta las siguientes operaciones:</p> + +<ul> + <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li> + <li>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</li> +</ul> + +<h3 id="Invariantes">Invariantes</h3> + +<p>Si los siguientes invariantes son violados, el proxy lanzará {{jsxref("TypeError")}}:</p> + +<ul> + <li><code>getOwnPropertyDescriptor</code> debe devolver un objeto o <code>undefined</code>.</li> + <li>No puede devolver que una propiedad no existe si está presente en el objeto como no configurable.</li> + <li>No puede devolver que una propiedad no existe si esta está presente como una propiedad propia del objeto destino y el objeto no es extensible.</li> + <li>No puede devolver que una propuedad existe, si esta no está presente en el objeto destino y el objeto no es extensible. </li> + <li>No puede devolver que una propiedad es no configurable si esta no existe en el objeto destino o si existe pero sí es configurable.</li> + <li>El resultado de <code>Object.getOwnPropertyDescriptor(target)</code> puede ser aplicado al objeto destino mediante <code>Object.defineProperty </code>y no lanzará ningún tipo de excepción.</li> +</ul> + +<h2 id="Ejemplos">Ejemplos</h2> + +<p>El siguiente código captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.</p> + +<pre class="brush: js">var p = new Proxy({ a: 20}, { + getOwnPropertyDescriptor: function(target, prop) { + console.log('called: ' + prop); + return { configurable: true, enumerable: true, value: 10 }; + } +}); + +console.log(Object.getOwnPropertyDescriptor(p, 'a').value); // "called: a" + // 10 +</pre> + +<p>El siguiente código viola uno de los invariantes definidos previamente.</p> + +<pre class="brush: js">var obj = { a: 10 }; +Object.preventExtensions(obj); +var p = new Proxy(obj, { + getOwnPropertyDescriptor: function(target, prop) { + return undefined; + } +}); + +Object.getOwnPropertyDescriptor(p, 'a'); // TypeError is thrown +</pre> + +<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('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Definición Inicial.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidad_con_buscadores">Compatibilidad con buscadores</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Proxy.handler.getOwnPropertyDescriptor")}}</p> +</div> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> + <li>{{jsxref("Proxy.handler", "handler")}}</li> + <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li> + <li>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/global_objects/proxy/handler/index.html b/files/es/web/javascript/reference/global_objects/proxy/handler/index.html new file mode 100644 index 0000000000..042e9b50b1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/proxy/handler/index.html @@ -0,0 +1,83 @@ +--- +title: Proxy handler +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler +tags: + - ECMAScript 2015 + - JavaScript + - NeedsTranslation + - Proxy + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +--- +<div>{{JSRef}}</div> + +<p>The proxy's handler object is a placeholder object which contains traps for {{jsxref("Proxy", "proxies", "", 1)}}.</p> + +<h2 id="Methods">Methods</h2> + +<p>All traps are optional. If a trap has not been defined, the default behavior is to forward the operation to the target.</p> + +<dl> + <dt>{{jsxref("Global_Objects/Proxy/handler/getPrototypeOf", "handler.getPrototypeOf()")}}</dt> + <dd>A trap for {{jsxref("Object.getPrototypeOf")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/setPrototypeOf", "handler.setPrototypeOf()")}}</dt> + <dd>A trap for {{jsxref("Object.setPrototypeOf")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/isExtensible", "handler.isExtensible()")}}</dt> + <dd>A trap for {{jsxref("Object.isExtensible")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/preventExtensions", "handler.preventExtensions()")}}</dt> + <dd>A trap for {{jsxref("Object.preventExtensions")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}</dt> + <dd>A trap for {{jsxref("Object.getOwnPropertyDescriptor")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/defineProperty", "handler.defineProperty()")}}</dt> + <dd>A trap for {{jsxref("Object.defineProperty")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/has", "handler.has()")}}</dt> + <dd>A trap for the {{jsxref("Operators/in", "in")}} operator.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/get", "handler.get()")}}</dt> + <dd>A trap for getting property values.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/set", "handler.set()")}}</dt> + <dd>A trap for setting property values.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/deleteProperty", "handler.deleteProperty()")}}</dt> + <dd>A trap for the {{jsxref("Operators/delete", "delete")}} operator.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/ownKeys", "handler.ownKeys()")}}</dt> + <dd>A trap for {{jsxref("Object.getOwnPropertyNames")}} and {{jsxref("Object.getOwnPropertySymbols")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/apply", "handler.apply()")}}</dt> + <dd>A trap for a function call.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/construct", "handler.construct()")}}</dt> + <dd>A trap for the {{jsxref("Operators/new", "new")}} operator.</dd> +</dl> + +<p>Some non-standard traps are <a href="/en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features#Proxy">obsolete and have been removed</a>.</p> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>The <code>enumerate</code> handler has been removed.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Proxy.handler")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/global_objects/proxy/handler/set/index.html b/files/es/web/javascript/reference/global_objects/proxy/handler/set/index.html new file mode 100644 index 0000000000..ee5ac155e7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/proxy/handler/set/index.html @@ -0,0 +1,122 @@ +--- +title: handler.set() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/set +tags: + - ECMAScript 2015 + - JavaScript + - Proxy + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set +--- +<div>{{JSRef}}</div> + +<p>El método <code><strong>handler.set()</strong></code> captura las asignaciones de un valor a una determinada propiedad.</p> + +<h2 id="Sintaxis">Sintaxis</h2> + +<pre class="brush: js">var p = new Proxy(target, { + set: function(target, property, value, receiver) { + } +}); +</pre> + +<h3 id="Parámetros">Parámetros</h3> + +<p>El método <code>set</code> recibe los siguientes parámetros.<code>this</code> se asocia al handler.</p> + +<dl> + <dt><code>target</code></dt> + <dd>El objeto objetivo.</dd> + <dt><code>property</code></dt> + <dd>El nombre de la propiedad a la que se le asignará el valor.</dd> + <dt><code>value</code></dt> + <dd>El nuevo valor asignado a la propiedad.</dd> + <dt><code>receiver</code></dt> + <dd>El objeto al que originalmente iba dirigida la asignación. Normalmente es el proxy. Sin embargo el manejador o <code>set</code> handler puede ser llamado de forma indirecta a través de un prototipo entre otros.</dd> + <dd>Por ejemplo, suponga que un escript ejecuta la sentencia <code>obj.name = "jen"</code>, y <code>obj</code> no es un proxy, y no posee la propiedad <code>.name</code>, pero tiene un proxy en su cadena de prototipos. El manejador <code>set</code> de este proxy será llamado y obj será pasado como el receiver.</dd> +</dl> + +<h3 id="Valor_Devuelto">Valor Devuelto</h3> + +<p>El método <code>set</code> debe devolver un valor booleano. Devolverá <code>true</code> para indicar que la asignación se ha llevado a cabo con éxito. Si devuelve <code>false</code>, y la asignación tiene lugar en modo estricto, se lanzará un error de tipo <code>TypeError</code>.</p> + +<h2 id="Descripción">Descripción</h2> + +<p>El método <code><strong>handler.set</strong></code> captura la asignación de un valor a una propiedad.</p> + +<h3 id="Qué_intercepta">Qué intercepta</h3> + +<p>Las siguientes operaciones son capturadas:</p> + +<ul> + <li>Asignación a propiedades: <code>proxy[foo] = bar</code> y <code>proxy.foo = bar</code></li> + <li>Asignación a propiedades heredadas: <code>Object.create(proxy)[foo] = bar</code></li> + <li>{{jsxref("Reflect.set()")}}</li> +</ul> + +<h3 id="Invariantes">Invariantes</h3> + +<p>Si los siguientes invariantes son violados, el proxy lanzará un {{jsxref("TypeError")}}:</p> + +<ul> + <li>El valor de la propiedad no puede ser diferente al de la correspondiente propiedad del objeto, si esta es una propiedad no configurable, o sin permisos de escritura.</li> + <li>No se puede asignar un valor a una propiedad si la correspondiente propiedad en el objeto objetivo es no configurable y tiene <code>undefined</code> como su atributo [[Set]].</li> + <li>En modo estricto, la devolución de <code>false</code> pro parte del manejador <code>set</code> lanzará una excepción del tipo {{jsxref("TypeError")}}.</li> +</ul> + +<h2 id="Ejemplos">Ejemplos</h2> + +<p>El siguiente código captura la asignación de un valor a una propiedad.</p> + +<pre class="brush: js">var p = new Proxy({}, { + set: function(target, prop, value, receiver) { + target[prop] = value + console.log('property set: ' + prop + ' = ' + value) + return true + } +}) + +console.log('a' in p) // false + +p.a = 10 // "propiedad asignada: a = 10" +console.log('a' in p) // true +console.log(p.a) // 10 +</pre> + +<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('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Definición inicial.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidad_con_los_buscadores">Compatibilidad con los buscadores</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Proxy.handler.set")}}</p> +</div> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> + <li>{{jsxref("Proxy.handler", "handler")}}</li> + <li>{{jsxref("Reflect.set()")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/global_objects/rangeerror/index.html b/files/es/web/javascript/reference/global_objects/rangeerror/index.html new file mode 100644 index 0000000000..672942b3ad --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/rangeerror/index.html @@ -0,0 +1,163 @@ +--- +title: RangeError +slug: Web/JavaScript/Reference/Global_Objects/RangeError +tags: + - Error + - JavaScript + - Object + - RangeError +translation_of: Web/JavaScript/Reference/Global_Objects/RangeError +--- +<div>{{JSRef}}</div> + +<p>El objeto <code><strong>RangeError</strong></code> indica un error cuando un valor no se encuentra dentro de un rango de valores permitidos.</p> + +<h2 id="Sintaxis">Sintaxis</h2> + +<pre class="syntaxbox"><code>new RangeError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre> + +<h3 id="Parámetros">Parámetros</h3> + +<dl> + <dt><code>message</code></dt> + <dd>Opcional. Mensaje de error</dd> + <dt><code>fileName</code> {{non-standard_inline}}</dt> + <dd>Opcional. Nombre del fichero que contiene el código donde se produjo el error</dd> + <dt><code>lineNumber</code> {{non-standard_inline}}</dt> + <dd>Opcional. Número de línea de código donde se produjo el error</dd> +</dl> + +<h2 id="Descripción">Descripción</h2> + +<p>Se lanza un <code>RangeError</code> cuando se pasa como parámetro a una función un número que no está dentro del rango que dicha función permite. Esto puede ocurrir cuando se intenta crear un array con una longitud inválida con el constructor {{jsxref("Array")}}, o al pasar valores inválidos a los métodos numéricos {{jsxref("Number.toExponential()")}}, {{jsxref("Number.toFixed()")}} o {{jsxref("Number.toPrecision()")}}.</p> + +<h2 id="Propiedades">Propiedades</h2> + +<dl> + <dt>{{jsxref("RangeError.prototype")}}</dt> + <dd>Permite añadir propiedades a objetos <code>RangeError</code>.</dd> +</dl> + +<h2 id="Métodos">Métodos</h2> + +<p><code>RangeError</code> no contiene métodos, pero hereda a través de la <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Herencia_y_la_cadena_de_protipos">cadena de prototipos</a>.</p> + +<h2 id="Instancias_de_RangeError">Instancias de <code>RangeError</code></h2> + +<h3 id="Propiedades_2">Propiedades</h3> + +<div>{{page('/es/docs/Web/JavaScript/Reference/Global_Objects/RangeError/prototype', 'Propiedades')}}</div> + +<h3 id="Métodos_2">Métodos</h3> + +<div>{{page('/es/docs/Web/JavaScript/Reference/Global_Objects/RangeError/prototype', 'Métodos')}}</div> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Utilizando_RangeError">Utilizando <code>RangeError</code></h3> + +<pre class="brush: js">var check = function(num) { + if (num < MIN || num > MAX) { + throw new RangeError('El parámetro debe estar entre ' + MIN + ' y ' + MAX); + } +}; + +try { + check(500); +} +catch (e) { + if (e instanceof RangeError) { + // TODO: Manejar el error de rango + } +} +</pre> + +<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('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Definición inical.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.6.2', 'RangeError')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-rangeerror', 'RangeError')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Característica</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Soporte básico</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>Característica</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>Soporte básico</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="Vea_también">Vea también</h2> + +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("RangeError.prototype")}}</li> + <li>{{jsxref("Array")}}</li> + <li>{{jsxref("Number.toExponential()")}}</li> + <li>{{jsxref("Number.toFixed()")}}</li> + <li>{{jsxref("Number.toPrecision()")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/global_objects/rangeerror/prototype/index.html b/files/es/web/javascript/reference/global_objects/rangeerror/prototype/index.html new file mode 100644 index 0000000000..ba020719b7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/rangeerror/prototype/index.html @@ -0,0 +1,130 @@ +--- +title: RangeError.prototype +slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +tags: + - Error + - JavaScript + - Propiedad + - Prototipo + - Prototype + - RangeError +translation_of: Web/JavaScript/Reference/Global_Objects/RangeError +--- +<div>{{JSRef}}</div> + +<p>La propiedad <code><strong>RangeError.prototype</strong></code> representa el prototipo de {{jsxref("RangeError")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Descripción">Descripción</h2> + +<p>Todas las instancias de {{jsxref("RangeError")}} heredan de <code>RangeError.prototype</code>. Puede utilizar el prototipo para añadir propiedades o métodos a todas las instancias.</p> + +<h2 id="Propiedades">Propiedades</h2> + +<dl> + <dt><code>RangeError.prototype.constructor</code></dt> + <dd>Especifica la función que crea instancias del prototipo.</dd> + <dt>{{jsxref("Error.prototype.message", "RangeError.prototype.message")}}</dt> + <dd>Mensaje de error. Aunque ECMA-262 especifica que {{jsxref("RangeError")}} debe procurar su propio <code>message</code>, en <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a>, se hereda de {{jsxref("Error.prototype.message")}}.</dd> + <dt>{{jsxref("Error.prototype.name", "RangeError.prototype.name")}}</dt> + <dd>Nombre del error. Heredada de {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.fileName", "RangeError.prototype.fileName")}}</dt> + <dd>Ruta al fichero en el que se produjo el error. Heredada de {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.lineNumber", "RangeError.prototype.lineNumber")}}</dt> + <dd>Número de línea en el fichero en el que se produjo el error. Heredada de {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.columnNumber", "RangeError.prototype.columnNumber")}}</dt> + <dd>Número de columna de la línea en la que se produjo. Heredada de {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.stack", "RangeError.prototype.stack")}}</dt> + <dd>Pila de llamadas. Heredada de {{jsxref("Error")}}.</dd> +</dl> + +<h2 id="Métodos">Métodos</h2> + +<p>Aunque el prototipo del objeto {{jsxref("RangeError")}} no contiene métodos propios, las instancias de {{jsxref("RangeError")}} heredan algunos a través de la <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Herencia_y_la_cadena_de_protipos">cadena de prototipos</a>.</p> + +<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">Commentario</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Definición inicial.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Definido como <code><em>NativeError</em>.prototype</code>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Definido como <code><em>NativeError</em>.prototype</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidad_de_navegadores">Compatibilidad de navegadores</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Característica</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Soporte básico</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>Característica</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>Soporte básico</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="Vea_también">Vea también</h2> + +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/es/web/javascript/reference/global_objects/reflect/index.html b/files/es/web/javascript/reference/global_objects/reflect/index.html new file mode 100644 index 0000000000..a2f9d12fb7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/reflect/index.html @@ -0,0 +1,137 @@ +--- +title: Reflect +slug: Web/JavaScript/Reference/Global_Objects/Reflect +tags: + - ECMAScript 2015 + - JavaScript + - NeedsTranslation + - Overview + - Reflect + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect +--- +<div>{{JSRef}}</div> + +<p><strong>Reflect </strong> es un objecto incorporado que proporciona metodos para interceptar operaciones de javascript. Los métodos son los mismos que los de <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler">proxy handlers</a>. <code>Reflect</code> no es un objeto de funciones y por lo tanto no puede ser construido.</p> + +<h2 id="Descripción">Descripción</h2> + +<p>A diferencia de la mayoria de los objetos globales, <code>Reflect</code> no es un constructor. No puede ser instanciado con un <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new">operador</a> <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> </a>o invocando el objecto <code>Reflect</code> como una función. Todas las propiedades y métodos de <code>Reflect</code> son estáticos (igual que los del objeto {{jsxref("Math")}}).</p> + +<h2 id="Métodos">Métodos</h2> + +<p>El objeto <code>Reflect</code> proporciona las siguientes funciones estáticas con los mismos nombres de los métodos de <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler">proxy handler</a>. Algunos de estos métodos son correspondientes a los métodos de {{jsxref("Object")}}.</p> + +<dl> + <dt>{{jsxref("Reflect.apply()")}}</dt> + <dd>Calls a target function with arguments as specified by the <code>args</code> parameter. See also {{jsxref("Function.prototype.apply()")}}.</dd> + <dt>{{jsxref("Reflect.construct()")}}</dt> + <dd> The <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> operator</a> as a function. Equivalent to calling <code>new target(...args)</code>.</dd> + <dt>{{jsxref("Reflect.defineProperty()")}}</dt> + <dd>Similar to {{jsxref("Object.defineProperty()")}}. Returns a {{jsxref("Boolean")}}.</dd> + <dt>{{jsxref("Reflect.deleteProperty()")}}</dt> + <dd>The <a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code> operator</a> as a function. Equivalent to calling <code>delete target[name]</code>.</dd> + <dt>{{jsxref("Reflect.get()")}}</dt> + <dd>A function that returns the value of properties.</dd> + <dt>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</dt> + <dd>Similar to {{jsxref("Object.getOwnPropertyDescriptor()")}}. Returns a property descriptor of the given property if it exists on the object, {{jsxref("undefined")}} otherwise.</dd> + <dt>{{jsxref("Reflect.getPrototypeOf()")}}</dt> + <dd>Same as {{jsxref("Object.getPrototypeOf()")}}.</dd> + <dt>{{jsxref("Reflect.has()")}}</dt> + <dd>The <a href="/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> operator</a> as function. Returns a boolean indicating whether an own or inherited property exists.</dd> + <dt>{{jsxref("Reflect.isExtensible()")}}</dt> + <dd>Same as {{jsxref("Object.isExtensible()")}}.</dd> + <dt>{{jsxref("Reflect.ownKeys()")}}</dt> + <dd>Returns an array of the target object's own (not inherited) property keys.</dd> + <dt>{{jsxref("Reflect.preventExtensions()")}}</dt> + <dd>Similar to {{jsxref("Object.preventExtensions()")}}. Returns a {{jsxref("Boolean")}}.</dd> + <dt>{{jsxref("Reflect.set()")}}</dt> + <dd>A function that assigns values to properties. Returns a {{jsxref("Boolean")}} that is <code>true</code> if the update was successful.</dd> + <dt>{{jsxref("Reflect.setPrototypeOf()")}}</dt> + <dd>A function that sets the prototype of an object.</dd> +</dl> + +<h2 id="Especificaciones">Especificaciones</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-reflect-object', 'Reflect')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-reflect-object', 'Reflect')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Reflect.enumerate has been removed.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidad_en_Navegadores">Compatibilidad en Navegadores</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatChrome(49.0)}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("42")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari(10)}}</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>Edge</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>{{CompatChrome(49.0)}}</td> + <td>{{CompatChrome(49.0)}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("42")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari(10)}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="También_ver">También ver</h2> + +<ul> + <li>The {{jsxref("Proxy")}} global object.</li> + <li>The {{jsxref("Proxy.handler", "handler")}} object.</li> +</ul> diff --git a/files/es/web/javascript/reference/global_objects/reflect/set/index.html b/files/es/web/javascript/reference/global_objects/reflect/set/index.html new file mode 100644 index 0000000000..10436d8928 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/reflect/set/index.html @@ -0,0 +1,148 @@ +--- +title: Reflect.set() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/set +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/set +--- +<div>{{JSRef}}</div> + +<p>El método estático <code><strong>Reflect</strong></code><strong><code>.set()</code></strong> funciona igual que asignar una propiedad en un objeto.</p> + +<h2 id="Sintaxis">Sintaxis</h2> + +<pre class="syntaxbox">Reflect.set(target, propertyKey, value[, receiver]) +</pre> + +<h3 id="Parámetros">Parámetros</h3> + +<dl> + <dt><code>target</code></dt> + <dd>El objeto en el cual se va a asignar una propiedad.</dd> + <dt><code>propertyKey</code></dt> + <dd>El nombre de la propiedad a asignar.</dd> + <dt>value</dt> + <dd>El valor de la propiedad.</dd> + <dt>receiver</dt> + <dd>El valor de <code>this</code> para usar en la llamada a <code>target</code> si se encuentra un setter.</dd> +</dl> + +<h3 id="Valor_de_retorno">Valor de retorno</h3> + +<p>Un {{jsxref("Boolean")}} indicando si se pudo o no asignar la propiedad.</p> + +<h3 id="Excepciones">Excepciones</h3> + +<p>Un {{jsxref("TypeError")}}, si <code>target</code> no es un {{jsxref("Object")}}.</p> + +<h2 id="Descripción">Descripción</h2> + +<p>El método <code>Reflect.set</code> permite asignar una propiedad a un objeto. It does property assignment and is like the <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors">property accessor</a> syntax as a function.</p> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Uso_de_Reflect.set()"><code><font face="x-locale-heading-primary, zillaslab, Palatino, Palatino Linotype, x-locale-heading-secondary, serif">Uso de </font>Reflect.set()</code></h3> + +<pre class="brush: js">// Objeto +var obj = {}; +Reflect.set(obj, 'prop', 'value'); // true +obj.prop; // "value" + +// Arreglo +var arr = ['duck', 'duck', 'duck']; +Reflect.set(arr, 2, 'goose'); // true +arr[2]; // "goose" + +// Puede truncar un arreglo. +Reflect.set(arr, 'length', 1); // true +arr; // ["duck"]; + +// Con solo un argumento, propertyKey y value son "undefined". +var obj = {}; +Reflect.set(obj); // true +Reflect.getOwnPropertyDescriptor(obj, 'undefined'); +// { value: undefined, writable: true, enumerable: true, configurable: true } +</pre> + +<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">Comentarios</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-reflect.set', 'Reflect.set')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-reflect.set', 'Reflect.set')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Característica</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Soporte básico</td> + <td>49</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop(42)}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>10</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Característica</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Soporte básico</td> + <td>{{CompatNo}}</td> + <td>49</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile(42)}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>10</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li>{{jsxref("Reflect")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors">Property accessors</a></li> +</ul> |