aboutsummaryrefslogtreecommitdiff
path: root/files/es/glossary/primitive
diff options
context:
space:
mode:
authorFlorian Merz <me@fiji-flo.de>2021-02-11 14:46:50 +0100
committerFlorian Merz <me@fiji-flo.de>2021-02-11 14:46:50 +0100
commita55b575e8089ee6cab7c5c262a7e6db55d0e34d6 (patch)
tree5032e6779a402a863654c9d65965073f09ea4182 /files/es/glossary/primitive
parent8260a606c143e6b55a467edf017a56bdcd6cba7e (diff)
downloadtranslated-content-a55b575e8089ee6cab7c5c262a7e6db55d0e34d6.tar.gz
translated-content-a55b575e8089ee6cab7c5c262a7e6db55d0e34d6.tar.bz2
translated-content-a55b575e8089ee6cab7c5c262a7e6db55d0e34d6.zip
unslug es: move
Diffstat (limited to 'files/es/glossary/primitive')
-rw-r--r--files/es/glossary/primitive/index.html125
1 files changed, 125 insertions, 0 deletions
diff --git a/files/es/glossary/primitive/index.html b/files/es/glossary/primitive/index.html
new file mode 100644
index 0000000000..1966a23803
--- /dev/null
+++ b/files/es/glossary/primitive/index.html
@@ -0,0 +1,125 @@
+---
+title: Primitivo
+slug: Glossary/Primitivo
+tags:
+ - CodingScripting
+ - Glosario
+ - JavaScript
+translation_of: Glossary/Primitive
+---
+<p><span class="seoSummary">En {{Glossary("JavaScript")}}, un <strong>primitive</strong> (valor primitivo, tipo de dato primitivo) son datos que no son un {{Glossary("object", "objeto")}} y no tienen {{Glossary("method", "métodos")}}. Hay 6 tipos de datos primitivos: {{Glossary("string")}}, {{Glossary("number")}}, {{Glossary("bigint")}}, {{Glossary("boolean")}} , {{Glossary("undefined")}} y {{Glossary("symbol")}}. También hay {{Glossary("null")}}, que aparentemente es primitivo, pero de hecho es un caso especial para cada {{JSxRef("Object")}}: y cualquier tipo estructurado se deriva de <code>null</code> por la {{web.link("/es/docs/Learn/JavaScript/Objects/Inheritance", "Cadena de prototipos")}}.</span></p>
+
+<p>La mayoría de las veces, un valor primitivo se representa directamente en el nivel más bajo de la implementación del lenguaje.</p>
+
+<p>Todos los primitivos son <strong>inmutables</strong>, es decir, no se pueden modificar. Es importante no confundir un primitivo en sí mismo con un valor primitivo asignado a una variable. Se puede reasignar un nuevo valor a la variable, pero el valor existente no se puede cambiar de la misma forma en que se pueden modificar los objetos, los arreglos y las funciones.</p>
+
+<h2 id="Ejemplo">Ejemplo</h2>
+
+<p>Este ejemplo te ayudará a comprender que los valores primitivos son <strong>inmutables</strong>.</p>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<pre class="brush: js notranslate">// El uso de un método de cadena no modifica la cadena
+var bar = "baz";
+console.log(bar); // baz
+bar.toUpperCase();
+console.log(bar); // baz
+
+// El uso de un método de arreglo muta el arreglo
+var foo = [];
+console.log(foo); // []
+foo.push("plugh");
+console.log(foo); // ["plugh"]
+
+// La asignación le da al primitivo un nuevo valor (no lo muta)
+bar = bar.toUpperCase(); // BAZ
+</pre>
+
+<p>Un primitivo se puede reemplazar, pero no se puede modificar directamente.</p>
+
+<h2 id="Otro_ejemplo_paso_a_paso">Otro ejemplo [paso a paso]</h2>
+
+<p>El siguiente ejemplo te ayudará a analizar cómo se ocupa JavaScript de los primitivos.</p>
+
+<h3 class="highlight-spanned" id="JavaScript_2"><span class="highlight-span">JavaScript</span></h3>
+
+<pre class="brush: js line-numbers language-js notranslate">// El primitivo
+let foo = 5;
+
+// Define una función que debería cambiar el valor primitivo
+function addTwo(num) {
+ num += 2;
+}
+// Otra función que intenta hacer lo mismo
+function addTwo_v2(foo) {
+ foo += 2;
+}
+
+// Llama a tu primera función mientras pasas el primitivo como argumento
+addTwo(foo);
+// Obtiene el valor primitivo actual
+console.log(foo); // 5
+
+// Intenta de nuevo con tu segunda función...
+addTwo_v2(foo);
+console.log(foo); // 5
+</pre>
+
+<p>¿Esperaba que fuera <code>7</code> en lugar de <code>5</code>?, si es así, lee cómo se ejecuta este código:</p>
+
+<ul>
+ <li>Para las llamadas a las funciones <code>addTwo</code> y <code>addTwo_v2</code>, JavaScript busca el valor del identificador <code>foo</code>. Encuentra correctamente tu variable instanciada con la primera declaración</li>
+ <li>Después de encontrarla, evalúa la expresión, <code>foo</code> se reemplaza por 5 y el motor de JavaScript pasa ese valor a las funciones como argumento</li>
+ <li>Antes de ejecutar las declaraciones dentro del cuerpo de las funciones, <strong>JavaScript toma una copia del argumento originalmente pasado</strong> (que es un primitivo) y crea una copia local. Estas copias, que existen solo dentro del ámbito de las funciones, son accesibles a través de los identificadores que especificaste en las definiciones de las funciones (<code>num</code> para <code>addTwo</code>, <code>foo</code> para <code>addTwo_v2</code>)</li>
+ <li>Luego, se ejecutan las instrucciones de las funciones:
+ <ul>
+ <li>En la primera función, se creó una variable <code>num</code> local. ¡Estas aumentando su valor en 2, no el valor original de <code>foo</code>!</li>
+ <li>En la segunda función, se creó una variable <code>foo</code> local. ¡Esto incrementa su valor en 2, no el valor original (externo) de <code>foo</code>!, además, en esta situación, no se puede acceder directamente a la variable <code>foo</code> externa. Esto se debe al alcance léxico de JavaScript y al ensombrecimiento de variables resultante. El <code>foo</code> local oculta al <code>foo</code> externo. Para obtener más información, consulta {{JSxRef("../Closures", "Cierres")}}. (Ten en cuenta que <code>window.foo</code> aún se podría usar para acceder a la variable <code>foo</code> externa).</li>
+ </ul>
+ </li>
+ <li>En conclusión, cualquier cambio dentro de tus funciones <strong>no</strong> afectará a la <code>foo</code> original en absoluto, ya que estas modificando <strong>copias</strong> de la misma.</li>
+</ul>
+
+<p>Es por eso que los primitivos son inmutables: en lugar de cambiarlos directamente, modificas una <em>copia, sin afectar el original</em>.</p>
+
+<h2 id="Envolturas_de_objetos_primitivos_en_JavaScript">Envolturas de objetos primitivos en JavaScript</h2>
+
+<p>A excepción de <code>null</code> y <code>undefined</code>, todos los valores primitivos tienen objetos equivalentes que envuelven los valores primitivos:</p>
+
+<ul>
+ <li>{{JSxRef("String")}} para el <code>string</code> primitivo.</li>
+ <li>{{JSxRef("Number")}} para el <code>number</code> primitivo.</li>
+ <li>{{JSxRef("BigInt")}} para el <code>bigint</code> primitivo.</li>
+ <li>{{JSxRef("Boolean")}} para el <code>boolean</code> primitivo.</li>
+ <li>{{JSxRef("Symbol")}} para el <code>symbol</code> primitivo.</li>
+</ul>
+
+<p>El método {{JSxRef("Objetos_globales/Object/valueOf"," valueOf()")}} del contenedor devuelve el valor primitivo.</p>
+
+<h2 id="Aprende_más">Aprende más</h2>
+
+<h3 id="Conocimientos_generales">Conocimientos generales</h3>
+
+<ul>
+ <li>{{JSxRef("../Data_structures", "Introducción a los tipos de datos de JavaScript")}}</li>
+ <li>{{Interwiki("wikipedia", "Tipo de dato primitivo")}} en Wikipedia</li>
+</ul>
+
+<section class="Quick_links" id="Quick_Links">
+<ol>
+ <li>{{Link("/es/docs/Glossary")}}
+
+ <ol>
+ <li>{{Glossary("JavaScript")}}</li>
+ <li>{{Glossary("string")}}</li>
+ <li>{{Glossary("number")}}</li>
+ <li>{{Glossary("bigint")}}</li>
+ <li>{{Glossary("boolean")}}</li>
+ <li>{{Glossary("null")}}</li>
+ <li>{{Glossary("undefined")}}</li>
+ <li>{{Glossary("symbol")}}</li>
+ </ol>
+ </li>
+ <li>{{JSxRef("../Data_structures", "Tipos de datos JavaScript")}}</li>
+</ol>
+</section>