<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Keiler Guardo Herrera - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Keiler Guardo Herrera - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 12 Jun 2026 15:35:03 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Cómo instalar Node.js en Ubuntu y actualizar npm a la última versión ]]>
                </title>
                <description>
                    <![CDATA[ Si intentas instalar la última versión de Node usando el gestor de paquetes apt, acabarás con la versión 10.19.0. Esta es la última versión en la tienda de aplicaciones de ubuntu, pero no es la última versión liberada de NodeJS. Esto se debe a que cuando se publican nuevas versiones ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-instalar-nodejs-en-ubuntu-y-actualizar-npm-a-la-ultima-version/</link>
                <guid isPermaLink="false">62e5ae98b4def50851975e3d</guid>
                
                    <category>
                        <![CDATA[ Node.js ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Wed, 03 Aug 2022 21:33:18 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/07/Slice-3-2-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-install-node-js-on-ubuntu-and-update-npm-to-the-latest-version/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Install Node.js on Ubuntu and Update npm to the Latest Version</a>
      </p><p>Si intentas instalar la última versión de Node usando el gestor de paquetes apt, acabarás con la versión <strong>10.19.0</strong>. Esta es la última versión en la tienda de aplicaciones de ubuntu, pero no es la última versión liberada de NodeJS.</p><p>Esto se debe a que cuando se publican nuevas versiones de un software, el equipo de Ubuntu puede tardar meses en probarlo y publicarlo en la tienda oficial de Ubuntu. Como resultado, para obtener las últimas versiones de cualquier software, es posible que tengamos que utilizar paquetes privados publicados por los desarrolladores.</p><p>En este tutorial, lo que queremos hacer es obtener la <strong>v12.18.1</strong> (LTS - con soporte a largo plazo) o la <strong>v14.4</strong> de Node. Para obtener las últimas versiones, podemos utilizar <strong>nodesource</strong> o <strong>nvm</strong> (node version manager). Te mostraré cómo usar ambos.</p><p>Todos los comandos aquí serán ejecutados usando el CLI/terminal de Ubuntu.</p><h2 id="usando-nvm-mi-m-todo-preferido">Usando NVM - mi método preferido</h2><p>Me gusta nvm porque me permite usar diferentes versiones de node para diferentes proyectos. A veces, puedes estar colaborando en un proyecto con alguien que usa una versión diferente de node y necesitas cambiar las versiones de node a lo que el proyecto requiere. Para esto, nvm es la mejor herramienta.</p><h2 id="instalar-nvm">Instalar NVM</h2><p><code>curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash</code></p><p>Para comprobar que nvm está instalado, escriba <code>nvm --version</code>. Si obtienes un número de versión como <code>0.35.3</code>, entonces sabes que nvm fue instalado con éxito.</p><p><strong>Reinicia tu terminal para que los cambios surtan efecto.</strong></p><h2 id="instalar-nodejs">Instalar NodeJS</h2><p>A continuación, vamos a instalar la versión 14.4 de Nodejs.</p><p>Simplemente, ejecuta <code>nvm install 14.4.0</code>.</p><p>Puedes utilizar un comando similar para instalar cualquier versión de node, por ejemplo <code>nvm install 12.18.1</code>.</p><p>Este comando instala automáticamente <strong>nodejs</strong>, así como la última versión de <strong>npm</strong> que está en <code>v6.14.5</code>.</p><p>Si alguna vez necesitas cambiar de la versión de node, puedes simplemente ejecutar <code>nvm use &lt;número de versión&gt;</code>, por ejemplo <code>nvm use v12.18.1</code>.</p><p>Para listar las diferentes versiones de node que tiene instaladas con nvm, ejecute <code>nvm ls</code>.</p><h2 id="instalar-nodesource">Instalar Nodesource</h2><p>Ejecuta el siguiente comando para decirle a Ubuntu que queremos instalar el paquete de Nodejs desde nodesource.</p><p><code>curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -</code></p><p>Ten en cuenta que v14.4.0 es la última versión de Node, pero actualmente no tiene LTS - soporte a largo plazo proporcionado para ello. Para instalar la última versión de Node con LTS, cambie <code>14</code> en el comando anterior por <code>12</code>.</p><p>Es posible que se te pida que introduzcas la contraseña de tu usuario root. Introduce y pulsa enter/return.</p><h2 id="instalar-nodejs-1"><strong>I</strong>nstalar NodeJS</h2><p>Una vez que hayamos terminado de configurar Nodesource, podemos instalar Nodejs v14.4. Ejecuta <code>sudo apt-get install -y nodejs</code>.</p><p>Después que hayamos terminado, podemos comprobar que tenemos la última versión de Node instalada. Simplemente, escribe <code>nodejs -v</code> en tu terminal y debería devolver la <code>v14.4.0</code>.</p><p>En este punto deberías tener npm instalado automáticamente. Para comprobar qué versión de npm tienes, ejecuta <code>npm version</code>. Si no obtiene un objeto que incluya la última versión de npm en 6.14.5, <code>{npm: '6.14.5'}</code>, entonces puedes actualizar npm manualmente ejecutando el siguiente comando:</p><p><code>npm install -g npm@latest</code>.</p><p>Si te encuentras con algún problema de que npm no se puede actualizar porque no está instalado, puedes instalar npm primero usando <code>sudo apt-get install -y npm</code>, y luego ejecutar el comando anterior para actualizarlo.</p><p>Para que ciertos paquetes de npm se ejecuten, también necesitamos ejecutar el comando <code>sudo apt install build-essential</code>.</p><p>Y eso es todo.</p><p>Ya tienes las últimas versiones de NodeJS y NPM en tu máquina Ubuntu.</p><p>Ve a construir grandes productos :)</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo centrar un Div con CSS: 10 maneras diferentes ]]>
                </title>
                <description>
                    <![CDATA[ Como desarrollador web, a veces centrar un div parece uno de los trabajos más difíciles del planeta Tierra. Pues bien, ya no. En este artículo, aprenderás 10 formas diferentes de centrar un div. Exploraremos cómo centrar divs utilizando la propiedad position de CSS, CSS Flexbox y CSS Grid. Después de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-centrar-un-div-con-css-10-maneras-diferentes/</link>
                <guid isPermaLink="false">62e3eb18b4def50851975826</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Wed, 03 Aug 2022 21:08:09 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-49-back.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-center-a-div-with-css-10-different-ways/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Center a Div with CSS – 10 Different Ways</a>
      </p><p>Como desarrollador web, a veces <strong>centrar un div</strong> parece uno de los trabajos más difíciles del planeta Tierra.</p><p>Pues bien, ya no. En este artículo, aprenderás 10 formas diferentes de centrar un <code>div</code>. Exploraremos cómo centrar divs utilizando la propiedad <strong>position</strong> de CSS, CSS <strong>Flexbox</strong> y CSS <strong>Grid</strong>.</p><p>Después de leer todo este artículo, estoy seguro de que empezarás a centrar <code>divs</code> como un profesional.</p><h2 id="c-mo-centrar-un-div">Cómo centrar un <code>Div</code></h2><p>Para este tutorial, utilizaré el mismo HTML para los 10 métodos que discutiremos a continuación. El HTML sólo contiene un <code>div</code> padre y un <code>div</code> hijo dentro de él.</p><p>El objetivo principal de este artículo es centrar el <code>div</code> hijo con respecto al padre. Sólo voy a cambiar los archivos CSS, pero podrás ver los efectos de los 10 diferentes métodos.</p><p>El archivo HTML principal es así:</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="es"&gt;

&lt;head&gt;
  &lt;meta charset="UTF-8" /&gt;
  &lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
  &lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
  &lt;title&gt;Centrando divs&lt;/title&gt;
  &lt;link rel="stylesheet" href="./estilos.css" /&gt;
  &lt;!-- Cambia el enlace del archivo CSS aquí --&gt;
  &lt;link rel="stylesheet" href="" /&gt;
  &lt;style&gt;
    * {
      box-sizing: border-box;
      margin: 0px;
      padding: 0px;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;div id="contenedorPadre"&gt;
    &lt;div id="contenedorHijo"&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;
</code></pre><p>Con sólo el estilo básico que se da en las siguientes líneas:</p><pre><code class="language-css">#contenedorPadre {
  width: 400px;
  height: 400px;
  background-color: #f55353;
}
#contenedorHijo {
  width: 100px;
  height: 100px;
  background-color: #feb139;
}
</code></pre><p>Tendremos algo como esto:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/06/Screenshot-2022-05-27-at-15.02.59.png" class="kg-image" alt="Screenshot-2022-05-27-at-15.02.59" width="600" height="400" loading="lazy"><figcaption>What the basic HTML and CSS styling gives us.</figcaption></figure><p>Simplemente hacemos un <code>div</code> padre y le damos un <code>width</code> y <code>height</code> de <code>400px</code>, y un <code>color</code> de <code>#f55353</code>.</p><p>Del mismo modo creamos un <code>div</code> hijo dentro de él y le damos un <code>width</code> y un <code>height</code> de <code>100px</code> y le damos un <code>color</code> de <code>#feb139</code>.</p><p>El objetivo final de este artículo será realizar esta transformación:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/06/Group-23.png" class="kg-image" alt="Group-23" width="600" height="400" loading="lazy"></figure><h2 id="c-mo-centrar-un-div-usando-la-propiedad-position-de-css">Cómo centrar un Div usando la propiedad <code>position</code> de CSS</h2><h3 id="1-c-mo-usar-position-relative-absolute-y-los-valores-de-desplazamiento-top-left"><strong>1. </strong>Cómo usar position: relative, absolute y los valores de desplazamiento top, left</h3><pre><code class="language-css">#contenedorPadre {
  position: relative;
}
#contenedorHijo {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
</code></pre><p>La propiedad <strong>position</strong> en CSS establece cómo se posiciona el elemento en la página. El valor por defecto de la propiedad position es <code>static</code>. Los otros valores que toma la propiedad position son <code>relative</code>, <code>absolute</code>, <code>fixed</code> y <code>sticky</code>.</p><p>Ahora bien, cuando damos un <code>position: absolute</code> a un elemento del DOM, <strong>éste se vuelve absoluto con respecto a toda la página</strong>. Esto sería útil si quisiéramos centrar el <code>div</code> con respecto a toda la página.</p><p>Por otro lado, al poner el elemento padre en <code>position: relative</code>, hace que el elemento hijo (con <code>position: absolute</code>) <strong>sea absoluto, relativo al elemento padre y no a toda la página.</strong></p><p>En el ejemplo anterior hacemos precisamente eso. Le damos al elemento padre una <code>position: relative</code> y al hijo una <code>position: absolute</code>.</p><p>Junto con la propiedad position, podemos especificar otras cuatro propiedades: <code>top</code>, <code>right</code>, <code>bottom</code> y <code>left</code>, que determinan la posición final del elemento.</p><p>La posición <code>top</code> y <code>bottom</code> especifican la <strong>posición vertical</strong> del elemento, mientras que <code>left</code> y <code>right</code> especifican la <strong>posición horizontal</strong>.</p><h3 id="2-c-mo-usar-position-relative-absolute-valores-de-desplazamiento-top-left-right-bottom-y-margin-auto"><strong>2. </strong>Cómo usar position: relative, absolute, valores de desplazamiento top, left, right, bottom y margin: auto</h3><pre><code class="language-css">#contenedorPadre {
  position: relative;
}
#contenedorHijo {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  margin: auto;
}
</code></pre><p>Continuando con nuestro conocimiento de las posiciones del anterior punto 1, aquí utilizamos la propiedad <code>margin</code> de CSS. <code>margin: auto</code> permite al navegador seleccionar un <strong>margen adecuado</strong> para el elemento hijo.</p><p>En la mayoría de los casos permite que el elemento hijo tome su ancho especificado y el navegador <strong>distribuye el espacio restante de forma equitativa</strong> entre el par de márgenes izquierdo y derecho o el par de márgenes superior e inferior o entre ambos pares.</p><p>Si mencionamos sólo <code>top: 0</code>, <code>bottom: 0</code> y <code>margin: auto</code>, centra el elemento hijo <strong>verticalmente</strong>.</p><p>Del mismo modo, si mencionamos sólo <code>left: 0</code>, <code>right: 0</code> y <code>margin: auto</code>, entonces se centrará el elemento hijo <strong>horizontalmente</strong>.</p><p>Y si se mencionan todas las propiedades como se muestra en el bloque de código anterior, entonces se obtiene <strong>un div perfectamente centrado tanto horizontal como verticalmente</strong>.</p><h2 id="c-mo-centrar-un-div-usando-css-flexbox">Cómo centrar un Div usando CSS Flexbox</h2><h3 id="3-c-mo-usar-flexbox-justify-content-y-align-item"><strong>3. </strong>Cómo usar Flexbox, justify-content y align-item</h3><p>Los dos métodos anteriores se basan más en un método clásico de alineación de elementos en la página. Los enfoques modernos hacen uso de las propiedades <strong>Flexbox</strong> (para el modelado de diseño en una dirección) y <strong>Grid</strong> layout (para el modelado de diseño bidimensional más complejo).</p><p>Veamos el enfoque Flexbox:</p><p>Flexbox no es una sola propiedad, sino que es un módulo que comprende un conjunto de propiedades. Algunas de estas propiedades son para el <strong>contenedor</strong> (es decir, el contenedor padre) y otras para los <strong>elementos hijos</strong> dentro de él.</p><p>El siguiente diagrama muestra una lista de propiedades que están destinadas a los elementos padre e hijo con respecto a Flexbox.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-42.png" class="kg-image" alt="Group-42" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/07/Group-42.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/07/Group-42.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-42.png 1600w" sizes="(min-width: 720px) 720px" width="1600" height="840" loading="lazy"></figure><p>Ahora no es posible cubrir todas las propiedades en este artículo. Más bien vamos a ver algunas de las propiedades que vamos a utilizar.</p><p>Como se mencionó anteriormente, hay dos entidades diferentes en el modelo Flexbox, el contenedor padre y el elemento hijo.</p><p>La propiedad <code>display: flex</code> define un contenedor como un contenedor flex. <code>flex-direction</code> es otra propiedad del contenedor padre que puede tomar cualquiera de los siguientes valores: <code>row</code> (valor por defecto), <code>row-reverse</code>, <code>column</code> y <code>column-reverse</code>.</p><p>Cuando se trabaja con Flexbox, necesitamos tener en cuenta dos ejes diferentes, que son el <strong>eje principal</strong> y el <strong>eje transversal</strong>.</p><p>Para los casos en los que <code>flex-dirección</code> es <code>row</code> o <code>row-reverse</code>, el <strong>eje horizontal es el eje principal y el eje vertical es el eje transversal</strong>.</p><p>Del mismo modo, cuando <code>flex-direction</code> es <code>column</code> o <code>column-reverse</code>, entonces el <strong>eje vertical es el eje principal y el eje horizontal es el eje transversal</strong>. Para mayor claridad visual, vea los siguientes diagramas:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-43.png" class="kg-image" alt="Group-43" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/07/Group-43.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/07/Group-43.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-43.png 1600w" sizes="(min-width: 720px) 720px" width="1600" height="840" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-44.png" class="kg-image" alt="Group-44" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/07/Group-44.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/07/Group-44.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-44.png 1600w" sizes="(min-width: 720px) 720px" width="1600" height="840" loading="lazy"></figure><p>La propiedad <code>justify-content</code> del contenedor padre define la alineación de sus hijos a lo largo del eje principal. Así, <code>justify-content: center</code> establece la alineación de todos sus elementos hijos en el centro con respecto al eje principal.</p><p>Del mismo modo, la propiedad <code>align-items</code> del contenedor padre define la alineación de sus hijos a lo largo del eje transversal. Así, <code>align-items: center</code> establece la alineación de todos sus elementos hijos en el centro con respecto al eje transversal.</p><p>Así, el bloque de código siguiente alineará perfectamente nuestro elemento hijo en el centro del elemento padre tanto vertical como horizontalmente.</p><p>En este método, no necesitamos especificar nada explícitamente para el elemento hijo. <code>display: flex</code>, <code>justify-content</code> y <code>align-items</code> manejan todo desde el componente padre.</p><pre><code class="language-css">#contenedorPadre {
  display: flex;
  justify-content: center;
  align-items: center;
}
</code></pre><h3 id="4-c-mo-usar-flexbox-justify-content-y-align-self"><strong>4. </strong>Cómo usar Flexbox, justify-content y align-self</h3><p>Este método es sólo una alternativa al método anterior y es bastante similar a él.</p><p>Pero en lugar de usar la propiedad <code>align-items</code> (en la propiedad del contenedor padre), que establece la alineación para <strong>todos los elementos hijos</strong> con respecto al eje transversal, usamos <code>align-self</code> (en los elementos hijos) que establece la alineación de <strong>los elementos flex individuales</strong> en el eje transversal.</p><pre><code class="language-css">#contenedorPadre {
  display: flex;
  justify-content: center;
}
#contenedorHijo {
  align-self: center;
}
</code></pre><h3 id="5-c-mo-usar-flexbox-y-margin-auto"><strong>5. </strong>Cómo usar Flexbox y margin: auto</h3><p>Flexbox nos da una capacidad de alineación y distribución del espacio muy potente. Además, como se mencionó anteriormente, <code>margin: auto</code> permite al navegador seleccionar un margen adecuado para el elemento hijo.</p><p>En la mayoría de los casos permite que el elemento hijo tome su ancho especificado, y el navegador distribuye el espacio restante de forma equitativa entre el par de márgenes izquierdo y derecho o el par de márgenes superior e inferior o entre ambos pares.</p><p>Esto significa que establecer el contenedor padre como <code>flex</code> y dar al hijo un <code>margin: auto</code> permite al navegador distribuir uniformemente el espacio sobrante a lo largo de las direcciones vertical y horizontal.</p><pre><code class="language-css">#contenedorPadre {
  display: flex;
}
#contenedorHijo {
  margin: auto;
}
</code></pre><h2 id="c-mo-centrar-un-div-usando-css-grid">Cómo centrar un Div usando CSS Grid</h2><h3 id="6-c-mo-usar-grid-justify-content-y-align-items"><strong>6. </strong>Cómo usar Grid, justify-content y align-items</h3><p>CSS Grid o simplemente Grid se utiliza para el modelado de diseño en <strong>dos dimensiones</strong> en comparación con Flexbox que se utiliza para el modelado <strong>unidimensional</strong>.</p><p>De forma similar a Flexbox, tenemos el concepto de contenedor de cuadrícula o contenedor padre y elementos de cuadrícula o elementos hijos.</p><p>El siguiente diagrama enumera todas las propiedades que se pueden utilizar para el padre y los hijos. Como CSS Grid es un tema enorme en sí mismo, no está en el alcance de este artículo discutir sobre cada una de las propiedades. Así que vamos a discutir las propiedades que estamos utilizando en este artículo.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-45.png" class="kg-image" alt="Group-45" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/07/Group-45.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/07/Group-45.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2022/07/Group-45.png 1600w" sizes="(min-width: 720px) 720px" width="1600" height="840" loading="lazy"></figure><p><code>display: grid</code> hace que un elemento se convierta en un contenedor de cuadrícula.</p><p><code>justify-items</code> y <code>align-items</code> alinean los elementos dentro de la cuadrícula a lo largo del eje de la línea (fila) y del bloque (columna) respectivamente.</p><p>Por otro lado, si el tamaño total de la cuadrícula es menor que el contenedor (lo que puede ocurrir si todos los elementos de la rejilla están dimensionados con unidades no flexibles como px), entonces en ese caso podemos controlar la alineación de la cuadrícula dentro del contenedor utilizando <code>justify-content</code> y <code>align-content</code>.</p><p><code>justify-content</code> y <code>align-content</code> alinean la cuadrícula a lo largo del eje de la línea (fila) y del eje del bloque (columna) respectivamente.</p><p>En nuestro caso sólo hay una <strong>cuadrícula</strong> y un solo elemento hijo dentro de ella, por lo que podemos utilizar <code>justify-content</code> o <code>justify-items</code> así como <code>align-content</code> o <code>align-items</code> indistintamente y obtener el mismo resultado.</p><pre><code class="language-css">#contenedorPadre {
  display: grid;
  justify-content: center;
  align-items: center;
}</code></pre><h3 id="7-c-mo-usar-grid-y-place-items"><strong>7. </strong>Cómo usar Grid y place-items</h3><p>Puedes usar <code>place-items</code> para establecer las propiedades <code>align-items</code> y <code>justify-items</code> en la misma declaración. Del mismo modo, <code>place-content</code> establece tanto <code>justify-content</code> como <code>align-content</code> en la misma declaración.</p><p>Como se ha mencionado anteriormente, en este caso de uso podemos usar <code>justify-content</code> o <code>justify-items</code> así como <code>align-content</code> o <code>align-items</code> indistintamente. Del mismo modo, también podemos utilizar indistintamente <code>place-items</code> o <code>place-content</code> y obtener el mismo resultado (específicamente para este caso de uso. Para cualquier otro caso de uso hay que analizar qué propiedad se debe utilizar).</p><pre><code class="language-css">#contenedorPadre {
  display: grid;
  place-items: center;
}
</code></pre><h3 id="8-c-mo-usar-grid-align-self-y-justify-self"><strong>8. </strong>Cómo usar Grid, align-self y justify-self</h3><p>Al igual que Flexbox, Grid también soporta la alineación individual de los elementos de la rejilla utilizando las propiedades <code>align-self</code> y <code>justify-self</code> (propiedades que deben ser especificadas en el elemento hijo).</p><p><code>justify-self</code> alinea los elementos de la cuadrícula dentro de una celda a lo largo del eje de la línea (fila) mientras que <code>align-self</code> alinea los elementos de la cuadrícula dentro de la celda a lo largo del eje de la columna.</p><pre><code class="language-css">#contenedorPadre {
  display: grid;
}
#contenedorHijo {
  align-self: center;
  justify-self: center;
}
</code></pre><h3 id="9-c-mo-usar-grid-y-place-self"><strong>9. </strong>Cómo usar Grid y place-self</h3><p>La propiedad <code>place-self</code> establece las propiedades <code>justify-self</code> y <code>align-self</code> en una sola declaración. Así que asignar un elemento hijo a <code>place-self: center</code> centra al hijo tanto vertical como horizontalmente.</p><pre><code class="language-css">#contenedorPadre {
  display: grid;
}
#contenedorHijo {
  place-self: center;
}
</code></pre><h3 id="10-c-mo-usar-grid-y-margin-auto"><strong>10. </strong>Cómo usar Grid y margin: auto</h3><p>De forma similar a Flexbox, Grid también nos ofrece potentes capacidades de alineación y distribución del espacio.</p><p>Como vimos en el punto 5, podemos hacer un proceso similar con Grid en lugar de usar Flexbox y obtendremos el mismo resultado si asignamos <code>margin: auto</code> al elemento hijo.</p><pre><code class="language-css">#contenedorPadre {
  display: grid;
}
#contenedorHijo {
  margin: auto;
}
</code></pre><h2 id="este-es-el-resultado">Este es el resultado</h2><p>Pues como era de esperar, siguiendo cualquiera de los métodos anteriores obtendremos esto:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/06/Screenshot-2022-05-27-at-15.02.39.png" class="kg-image" alt="Screenshot-2022-05-27-at-15.02.39" width="600" height="400" loading="lazy"></figure><h2 id="resumen">Resumen</h2><p>En este artículo, vimos cómo centrar un div usando 10 métodos diferentes. Esos métodos fueron:</p><ol><li>Usando <strong><strong>position: relative</strong></strong>, <strong><strong>absolute</strong>, </strong>valores de desplazamiento como <strong><strong>top</strong> y</strong> <strong><strong>left</strong></strong></li><li>Usando <strong><strong>position</strong></strong>: <strong><strong>relative</strong>,</strong> <strong><strong>absolute</strong></strong>, valores de desplazamiento como <strong><strong>top</strong></strong>, <strong><strong>left</strong></strong>, <strong><strong>right</strong>,</strong> <strong><strong>bottom</strong></strong> y <strong><strong>margin: auto</strong></strong></li><li>Usando <strong><strong>flexbox</strong></strong>, <strong><strong>justify-content</strong></strong> y <strong><strong>align-item</strong></strong></li><li>Usando <strong><strong>flexbox</strong></strong>, <strong><strong>justify-content</strong></strong> y <strong><strong>align-self</strong></strong></li><li>Usando <strong><strong>flexbox</strong></strong> y <strong><strong>margin: auto</strong></strong></li><li>Usando <strong><strong>grid</strong></strong>, <strong><strong>justify-content</strong></strong> y <strong><strong>align-items</strong></strong></li><li>Usando <strong><strong>grid</strong></strong> y <strong><strong>place-items</strong></strong></li><li>Usando <strong><strong>grid</strong></strong>, <strong><strong>align-self</strong></strong> y <strong><strong>justify-self</strong></strong></li><li>Usando <strong><strong>grid</strong></strong> y <strong><strong>place-self</strong></strong></li><li>Usando <strong><strong>grid</strong></strong> y <strong><strong>margin: auto</strong></strong></li></ol><p>También vimos lo que significan todas estas propiedades como <code>justify-content</code>, <code>align-items</code>, <code>position</code> y mucho más, además cómo podemos usar algunas de ellas juntas para centrar nuestros divs.</p><h2 id="enlace-a-github">Enlace a GitHub</h2><p>Puedes encontrar el enlace de GitHub para todos los archivos de todos los métodos mencionados anteriormente aquí: <a href="https://github.com/sohamderoy/blog-setup-centring-divs">Enlace a Github</a></p><h2 id="resumen-1">Resumen</h2><p>¡Gracias por leer! Espero que te haya gustado este artículo sobre 10 métodos diferentes para centrar un <code>div</code> y espero que te sean útiles en el futuro.</p><p>Considera la posibilidad de compartir este artículo con tus amigos, te lo agradecería mucho. Permanece atento a más contenido increíble. ¡Paz y tranquilidad! ?</p><h2 id="enlaces-a-redes-sociales">Enlaces a redes sociales</h2><ul><li><a href="https://www.linkedin.com/in/sohamderoy/">LinkedIn</a></li><li><a href="https://www.sohamderoy.dev/">Página web</a></li><li><a href="https://twitter.com/_sohamderoy">Twitter</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Valores falsos en JavaScript ]]>
                </title>
                <description>
                    <![CDATA[ Descripción Un valor falso es algo que se evalúa como FALSE, por ejemplo, cuando se comprueba una variable. Solo hay seis valores falsos en JavaScript: undefined,  null, NaN, 0, "" (cadena vacía), y false por supuesto. Comprobación de valores falsos en las variables Es posible comprobar un valor falso ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/valores-falsos-en-javascript-2/</link>
                <guid isPermaLink="false">62e13014b4def508519752c0</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Mon, 01 Aug 2022 02:44:29 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/07/5f9c9eb6740569d1a4ca3ea5.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/falsy-values-in-javascript/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Falsy Values in JavaScript</a>
      </p><h2 id="descripci-n">Descripción</h2><p>Un valor falso es algo que se evalúa como FALSE, por ejemplo, cuando se comprueba una variable. Solo hay seis valores falsos en JavaScript: <code>undefined</code>, <code>null</code>, <code>NaN</code>, <code>0</code>, <code>""</code> (cadena vacía), y <code>false</code> por supuesto.</p><h2 id="comprobaci-n-de-valores-falsos-en-las-variables">Comprobación de valores falsos en las variables</h2><p>Es posible comprobar un valor falso en una variable con una simple condición:</p><pre><code class="language-javascript">if (!variable) {
  // Cuando la variable tiene un valor falso la condición es true.
}</code></pre><h2 id="ejemplos-generales">Ejemplos generales</h2><pre><code class="language-javascript">var cadena = ""; // &lt;-- falso

var cadenaLlena = "una cadena de texo aquí"; // &lt;-- verdadero

var cero = 0; // &lt;-- falso

var numeroMayorQueCero // &lt;-- verdadero

var arregloVacio = []; // &lt;-- verdadero, exploraremos más sobre esto a continuación

var objetoVacio = {}; // &lt;-- verdadero</code></pre><h2 id="diversi-n-con-arreglos">Diversión con arreglos</h2><pre><code class="language-javascript">if ([] == false) // &lt;-- verdadero, ejecutará el código del bloque if

if ([]) // &lt;-- verdadero, también ejecutará el código del bloque if

if ([] == true) // &lt;-- falso, NO ejecutará el código del bloque if

if (![]) // &lt;-- falso, tampoco ejecutará el código del bloque if</code></pre><h2 id="advertencia">Advertencia</h2><p>Ten en cuenta el tipo de datos cuando evalúes un valor en un contexto booleano. Si el tipo de dato del valor es un <em>número</em>, la evaluación verdadero/falso puede dar un resultado inesperado:</p><pre><code class="language-javascript">const coincidir = { equipoA: 0, equipoB: 1 }
if (coincidir.equipoA)
  // Lo siguiente no se ejecutará debido a la evaluación falsa
  console.log('Equipo A: ' + coincidir.equipoA);
}</code></pre><p>Una alternativa al caso de uso anterior es evaluar el valor utilizando <code>typeof</code>:</p><pre><code class="language-javascript">const coincidir = { equipoA: 0, equipoB: 1 }
if (typeof coincidir.equipoA === 'number')
  console.log('Equipo A: ' + coincidir.equipoA);
}</code></pre> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ JavaScript rest vs. operador de propagación (spread): ¿Cuál es la diferencia? ]]>
                </title>
                <description>
                    <![CDATA[ JavaScript utiliza tres puntos (...) tanto para los operadores de rest como para propagación. Pero estos dos operadores no son lo mismo. La principal diferencia entre rest y el operador propagación es que el operador rest pone el resto de algunos valores específicos suministrados por el usuario en un arreglo ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/javascript-rest-vs-operador-de-propagacion-cual-es-la-diferencia/</link>
                <guid isPermaLink="false">621fc6d85e4d0b08bcc779e1</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Mon, 01 Aug 2022 02:37:35 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/03/javascript-rest-vs-spread-operators-codesweetly-1-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/javascript-rest-vs-spread-operators/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">JavaScript Rest vs Spread Operator – What’s the Difference?</a>
      </p><p>JavaScript utiliza tres puntos (<code>...</code>) tanto para los operadores de rest como para propagación. Pero estos dos operadores no son lo mismo.</p><p>La principal diferencia entre rest y el operador propagación es que el operador rest pone el resto de algunos valores específicos suministrados por el usuario en un arreglo de JavaScript. Pero la progración expande los iterables en elementos individuales.</p><p>Por ejemplo, considera este código que utiliza rest para encerrar algunos valores en un arreglo:</p><pre><code class="language-js">// Utiliza rest para encerrar el resto de los valores específicos suministrados por el usuario en un arreglo:
function miBiografia(primerNombre, apellido, ...otraInformacion) { 
  return otraInformacion;
}

// Llama la función miBiografia pasando cinco argumentos a sus parámetros:
miBiografia("Oluwatobi", "Sofela", "CodeSweetly", "Desarrollador Web", "Masculino");

// La llamada de arriba devolverá:
["CodeSweetly", "Desarrollador Web", "Masculino"]</code></pre><p><strong>Pruébalo en <a href="https://stackblitz.com/edit/el-operador-rest?file=script.js">StackBlitz</a></strong></p><p>En el ejemplo anterior, utilizamos el parámetro rest en <code>...otraInformacion</code> para poner <code>"CodeSweetly"</code>, <code>"Desarrollador Web"</code> y <code>"Masculino"</code> en un un arreglo.</p><p>Ahora, considera este ejemplo del operador de propagación:</p><pre><code class="language-js">// Define una función con tres parámetros:
function miBiografia(primerNombre, apellido, compania) { 
  return `${primerNombre} ${apellido} dirige ${compania}`;
}

// Utiliza propagación para expandir los elementos de un arreglo de elementos individuales:
miBiografia(...["Oluwatobi", "Sofela", "CodeSweetly"]);

// La llamada de arriba devolverá:
“Oluwatobi Sofela dirige CodeSweetly”</code></pre><p><strong>Pruébalo en <a href="https://stackblitz.com/edit/argumentos-individuales?file=script.js">StackBlitz</a></strong></p><p>En el fragmento anterior, hemos utilizado el operador de propagación (<code>...</code>) para propagar el contenido de <code>["Oluwatobi", "Sofela", "CodeSweetly"]</code> entre los parámetros de <code>miBiografia()</code>.</p><p>No te preocupes si aún no entiendes el operador rest o el operador de propagación. ¡Este artículo lo tiene cubierto!</p><p>En las siguientes secciones, discutiremos cómo trabaja el operador rest y operador de propagación en JavaScript.</p><p>Así que, sin más preámbulos, empecemos con el operador rest.</p><h2 id="-qu-es-exactamente-el-operador-rest">¿Qué es exactamente el operador rest?</h2><p>El <strong>operador rest</strong> se utiliza para poner el resto de algunos valores específicos suministrados por el usuario en un arreglo de JavaScript.</p><p>Así, por ejemplo, aquí está la sintaxis de rest:</p><pre><code class="language-js">...tusValores</code></pre><p>Los tres puntos (<code>...</code>) en el fragmento anterior simbolizan el operador rest.</p><p>El texto que aparece después del operador rest hace referencia a los valores que deseas incluir en un arreglo. Sólo se puede utilizar antes del último parámetro en la definición de una función.</p><p>Para entender mejor la sintaxis, veamos cómo funciona rest con las funciones de JavaScript.</p><h3 id="-c-mo-funciona-el-operador-rest-en-una-funci-n">¿Cómo funciona el operador rest en una función?</h3><p>En las funciones de JavaScript, rest se utiliza como antepuesto del último parámetro de la función.</p><p><strong>He aquí un ejemplo:</strong></p><pre><code class="language-js">// Define una función con dos parámetros regulares y un parámetro rest:
function miBiografia(primerNombre, apellido, ...otraInformacion) { 
  return otraInformacion;
}</code></pre><p>El operador rest (<code>...</code>) le indica al ordenador que añada cualquier argumento en <code>otraInformacion</code> suministrado por el usuario en un arreglo. A su vez, asigna ese arreglo al parámetro <code>otraInformacion</code>.</p><p>Como tal, llamamos a <code>...otraInformacion</code> un parámetro rest.</p><p><strong><strong>No</strong>ta<strong>: </strong></strong>Los argumentos son valores opcionales que se pueden pasar al parámetro de una función a través de un invocador.</p><p><strong>He aquí otro ejemplo:</strong></p><pre><code class="language-js">// Define una función con dos parámetros regulares y un parámetro rest:
function miBiografia(primerNombre, apellido, ...otraInformacion) { 
  return otraInformacion;
}

// Llama la función miBiografia pasando cinco argumentos a sus parámetros:
miBiografia("Oluwatobi", "Sofela", "CodeSweetly", "Desarrollador Web", "Masculino");

// La invocación anterior devolverá:
["CodeSweetly", "Desarrollador Web", "Masculino"]</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/cmo-funciona-el-operador-rest-en-una-funcin?file=script.js">StackBlitz</a></strong></strong></p><p>En el fragmento anterior, observa que la invocación de <code>miBiografia</code> pasó cinco argumentos a la función.</p><p>Es decir, <code>"Oluwatobi"</code> y <code>"Sofela"</code> fueron asignados a los parámetros <code>primerNombre</code> y <code>apellido</code>.</p><p>Al mismo tiempo, el operador rest añadió los argumentos restantes ( <code>"CodeSweetly"</code>, <code>"Desarrollador Web"</code>, y <code>"Hombre"</code>) en un arreglo y asignó ese arreglo al parámetro <code>otraInformacion</code>.</p><p>Por lo tanto, la función <code>miBiografia()</code> devolvió correctamente <code>["CodeSweetly", "Desarrollador Web", "Hombre"]</code> como contenido del parámetro rest <code>otraInformacion</code>.</p><h3 id="-cuidado-no-puedes-utilizar-use-strict-dentro-de-una-funci-n-que-contenga-un-par-metro-rest">¡Cuidado! No puedes utilizar<strong> <code>“use strict”</code> </strong>dentro de una función que contenga un parámetro rest</h3><p>Tenga en cuenta que no puede utilizar la instrucción <code>“use strict”</code> dentro de ninguna función que contenga un parámetro rest, un parámetro por defecto o un parámetro de desestructuración, or destructuring parameter. De lo contrario, el ordenador lanzará un <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params">error de sintaxis</a>.</p><p>Por ejemplo, considere el siguiente ejemplo:</p><pre><code class="language-js">// Define una función con un parámetro res:
function imprimirMiNombre(...valor) {
  "use strict";
  return valor;
}

// La definición anterior devolverá:
"Uncaught SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list"</code></pre><p><strong>Pruébalo en<strong><a href="https://codesandbox.io/s/no-puedes-usar-use-strict-a-dentro-de-una-function-conteniendo-un-parametro-rest-forked-dpw2uj?file=/src/index.js"> CodeSandbox</a></strong></strong></p><p><code>imprimirMiNombre()</code> devolvió un error de sintaxis porque se utilizó la instrucción <code>“use strict”</code> dentro de una función con un parámetro rest.</p><p>Pero supón que necesitas que tu función esté en modo estricto a la vez que utilizas el parámetro rest. En tal caso, escribir la instrucción <code>“use strict”</code> fuera de la función.</p><p><strong>He aquí un</strong> <strong>ejemplo</strong>:</p><pre><code class="language-js">// Define la instrucción “use strict” fuera de tu función:
"use strict";

// Define una función con un parámetro rest:
function imprimirMiNombre(...valor) {
  return valor;
}

// Llama la función imprimirMiNombre pasando dos argumentos a sus parámetros:
imprimirMiNombre("Oluwatobi", "Sofela");

// La invocación de arriba devolverá:
["Oluwatobi", "Sofela"]</code></pre><p><strong>Pruébalo en <strong><a href="https://codesandbox.io/s/puedes-usar-use-strict-fuera-de-una-funcion-que-contenga-un-parametro-rest-forked-xtv3gz">CodeSandbox</a></strong></strong></p><p><strong>Nota<strong>: </strong></strong>Sólo coloca la instrucción <code>“use strict”</code> fuera de tu función si está bien que todo el script o el ámbito que lo encierra esté en modo estricto.</p><p>Así que ahora que sabemos cómo funciona rest en una función, podemos hablar de cómo funciona en una asignación de desestructuración.</p><h3 id="c-mo-funciona-el-operador-rest-en-una-asignaci-n-de-desestructuraci-n">Cómo funciona el operador Rest en una asignación de desestructuración</h3><p>El operador rest suele utilizarse como prefijo de la última variable de la asignación de desestructuración.</p><p><strong>He aquí un ejemplo:</strong></p><pre><code class="language-js">// Define un arreglo de desestructuración con dos variables regulares y una variable rest:
const [primerNombre, apellido, ...otraInformacion] = [
  "Oluwatobi", "Sofela", "CodeSweetly", "Desarrollador Web", "Masculino"
];

// Consultamos la variable otraInformacion:
console.log(otraInformacion); 

// La llamada de arriba devolverá:
["CodeSweetly", "Desarrollador Web", "Masculino"]</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/desestructuracion?file=script.js">StackBlitz</a></strong></strong></p><p>El operador rest (<code>...</code>) indica a la computadora que añada el resto de los valores suministrados por el usuario en un arreglo. Luego, asigna ese arreglo a la variable <code>otraInformacion</code>.</p><p>Como tal, puedes llamar a <code>...otraInformacion</code> una variable rest.</p><p><strong>Aquí hay otro ejemplo:</strong></p><pre><code class="language-js">// Define un objeto de desestructuración con dos variables regulares y una variable res:
const { primerNombre, apellido, ...otraInformacion } = {
  primerNombre: "Oluwatobi",
  apellido: "Sofela", 
  nombreCompania: "CodeSweetly",
  profesion: "Desarrollador Web",
  genero: "Masculino"
}

// Llama a la variable otraInformacion:
console.log(otraInformacion);

// La llamada de arriba devolverá:
{nombreCompania: "CodeSweetly", profesion: "Desarrollador Web", genero: "Masculino"}</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/desestructuracion-2?file=script.js">StackBlitz</a></strong></strong></p><p>En el fragmento anterior, observa que el operador rest asignó un objeto de propiedades - no un arreglo - a la variable <code>otraInformacion</code>.</p><p>En otras palabras, siempre que utilice rest en un objeto desestructurado el operador rest producirá un objeto de propiedades.</p><p>Sin embargo, si se utiliza rest en un arreglo o función de desestructuración el operador producirá un arreglo literal.</p><p>Antes de terminar nuestra discusión sobre rest, debes ser consciente de algunas diferencias entre los arguments de JavaScript y el parámetro rest. Por lo tanto, vamos a hablar de eso a continuación.</p><h3 id="argumentos-vs-par-metro-rest-cu-l-es-la-diferencia">Argumentos vs. parámetro Rest: ¿Cuál es la diferencia?</h3><p>Estas son algunas de las diferencias entre los argumentos de JavaScript y el parámetro rest:</p><h4 id="diferencia-1-el-objeto-de-argumentos-es-un-objeto-similar-a-un-arreglo-no-un-arreglo-real-">Diferencia 1: El objeto de<strong> <code>argumentos</code> </strong>es un objeto similar a un arreglo - ¡no un arreglo real!</h4><p>Tenga en cuenta que el objeto de argumentos de JavaScript no es un arreglo de verdad. En su lugar, es un objeto similar a un arreglo que no tiene las características completas de un arreglo regular de JavaScript.</p><p>El parámetro rest, sin embargo, es un objeto de arreglo de verdad. Como tal, puedes utilizar todos los métodos de arreglos en él.</p><p>Así, por ejemplo, puedes llamar los métodos <code>sort()</code>, <code>map()</code>, <code>forEach()</code>, o <code>pop()</code> Pero no puedes hacer lo mismo con el objeto de argumentos.</p><h4 id="diferencia-2-no-se-puede-utilizar-el-objeto-de-argumentos-en-una-funci-n-de-flecha">Diferencia 2<strong>: </strong>No se puede utilizar el objeto<strong> de <code>argumentos</code> </strong>en una función de flecha</h4><p>El objeto <code>argumentos</code> no está disponible dentro de una función de flecha, por lo que no se puede utilizar ahí. Pero puedes usar el parámetro rest dentro de todas las funciones - incluyendo la función flecha.</p><h4 id="diferencia-3-deja-que-rest-sea-tu-preferido">Diferencia 3: Deja que <code>rest</code> sea tu preferido</h4><p>Es mejor utilizar los parámetros <code>rest</code> en lugar del objeto de <code>argumentos</code> especialmente cuando se escribe código compatible con ES6.</p><p>Ahora que sabemos cómo funciona rest, vamos a discutir el operador de <code>propagación</code> para que podamos ver las diferencias.</p><h2 id="-qu-es-el-operador-de-propagaci-n-y-c-mo-funciona-en-javascript">¿Qué es el operador<strong> de <code>propagación</code> </strong>y cómo funciona en JavaScript?</h2><p>El <strong>operador de propagación</strong> (<code>...</code>) ayuda a expandir los iterables en elementos separados.</p><p>La sintaxis de propagación funciona dentro de los literales de los arreglos, las llamadas a las funciones y los objetos de propiedad inicializados para expandir los valores de los <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Iterators_and_Generators">objetos iterables</a> en elementos separados. Así que, efectivamente, hace lo contrario que el operador rest.</p><p><strong>Nota</strong>: Un operador de propagación es efectivo sólo cuando se usa dentro de arreglos literales, llamadas a funciones u objetos de propiedades inicializadas.</p><p>Entonces, ¿qué significa exactamente esto? Veamos con algunos ejemplos.</p><h3 id="ejemplo-1-de-propagaci-n-c-mo-funciona-la-propagaci-n-en-un-arreglo-literal">Ejemplo 1 de propagación: Cómo funciona la propagación en un arreglo literal</h3><pre><code class="language-js">const miNombre = ["Sofela", "es", "mi"];
const sobreMi = ["Oluwatobi", ...miNombre, "nombre."];

console.log(sobreMi);

// La llamada de arriba devolverá:
[ "Oluwatobi", "Sofela", "es", "mi", "nombre." ]</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/ejemplo-propagacion?file=script.js">StackBlitz</a></strong></strong></p><p>El fragmento anterior utilizó la expresión (<code>...</code>) para copiar el arreglo <code>miNombre</code> dentro de <code>sobreMi</code>.</p><p><strong>Nota<strong>:</strong></strong></p><ul><li>Las alteraciones de <code>miNombre</code> no se reflejarán en <code>sobreMi</code> porque todos los valores dentro de <code>miNombre</code> son primitivos. Por lo tanto, el operador de propagación simplemente copió y pegó el contenido de <code>miNombre</code> en <code>sobreMi</code> sin crear ninguna referencia al arreglo original.</li><li>Como mencionó <a href="https://dev.to/oluwatobiss/spread-operator-how-spread-works-in-javascript-4fdn#comment-node-767546">@nombrekeff</a> en un comentario <a href="https://dev.to/oluwatobiss/spread-operator-how-spread-works-in-javascript-4fdn">aquí</a>, el operador de propagación sólo hace una copia superficial. Así que, ten en cuenta que suponiendo que <code>miNombre</code> contuviera cualquier valor no primitivo, el ordenador habría creado una referencia entre <code>miNombre</code> y <code>sobreMi</code>. Vea la información 3 un poco más abajo, para más información sobre cómo funciona el operador de propagación con valores primitivos y no primitivos.</li><li>Supongamos que no utilizamos la sintaxis de propagación para duplicar el contenido de <code>miNombre</code>. Por ejemplo, si hubiéramos escrito <code>const sobreMi = ["Oluwatobi", miNombre, "nombre."]</code>. En tal caso, el ordenador habría asignado una referencia a <code>miNombre</code>. Así, cualquier cambio realizado en el arreglo original se reflejaría en el duplicado.</li></ul><h3 id="ejemplo-2-de-propagaci-n-c-mo-utilizar-propagaci-n-para-convertir-una-cadena-en-elementos-individuales-de-un-arreglo">Ejemplo 2 de propagación: Cómo utilizar propagación para convertir una cadena en elementos individuales de un arreglo</h3><pre><code class="language-js">const miNombre = "Oluwatobi Sofela";

console.log([...miNombre]);

// La llamada de arriba devolverá:
[ "O", "l", "u", "w", "a", "t", "o", "b", "i", " ", "S", "o", "f", "e", "l", "a" ]</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/web-platform-axvtye?file=script.js">StackBlitz</a></strong></strong></p><p>En el fragmento anterior, hemos utilizado la sintaxis de propagación (<code>...</code>) dentro de un arreglo literal (<code>[...]</code>) para expandir el valor de la cadena de <code>miNombre</code> en elementos individuales.</p><p>Así, <code>"Oluwatobi Sofela"</code> se expandió en <code>[ "O", "l", "u", "w", "a", "t", "o", "b", "i", " ", "S", "o", "f", "e", "l", "a" ]</code>.</p><h3 id="ejemplo-3-c-mo-funciona-el-operador-de-propagaci-n-en-una-llamada-de-funci-n">Ejemplo 3: Cómo funciona el operador de propagación en una llamada de función</h3><pre><code class="language-js">const numeros = [1, 3, 5, 7];

function agregarNumeros(a, b, c, d) {
  return a + b + c + d;
}

console.log(agregarNumeros(...numeros));

// La llamada de arriba devolverá:
16</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/propagacion-en-funcion?file=script.js">StackBlitz</a></strong></strong></p><p>En el fragmento anterior, hemos utilizado la sintaxis de propagación para distribuir el contenido de un arreglo de <code>numeros</code> entre los parámetros de <code>agregarNumeros()</code>.</p><p>Supongamos que el arreglo de <code>numeros</code> tiene más de cuatro elementos. En tal caso, el ordenador sólo utilizará los cuatro primeros elementos como argumento de <code>agregarNumeros()</code> e ignorará el resto.</p><p><strong>He aquí un ejemplo:</strong></p><pre><code class="language-js">const numeros = [1, 3, 5, 7, 10, 200, 90, 59];

function agregarNumeros(a, b, c, d) {
  return a + b + c + d;
}

console.log(agregarNumeros(...numeros));

// La llamada de arriba devolverá:
16</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/ejemplo-propagacion-3b?file=script.js">StackBlitz</a></strong></strong></p><p><strong>He aquí otro ejemplo:</strong></p><pre><code class="language-js">const miNombre = "Oluwatobi Sofela";

function deletrearNombre(a, b, c) {
  return a + b + c;
}

console.log(deletrearNombre(...miNombre));      // devolverá: "Olu"

console.log(deletrearNombre(...miNombre[3]));   // devolverá: "wundefinedundefined"

console.log(deletrearNombre([...miNombre]));    // devolverá: "O,l,u,w,a,t,o,b,i, ,S,o,f,e,l,aundefinedundefined"

console.log(deletrearNombre({...miNombre}));    // devolverá: "[object Object]undefinedundefined"</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/ejemplo-propagacion-3c?file=script.js">StackBlitz</a></strong></strong></p><h3 id="ejemplo-4-de-propagaci-n-c-mo-funciona-la-propagaci-n-en-un-objeto-literal">Ejemplo 4 de propagación: Cómo funciona la propagación en un objeto literal</h3><pre><code class="language-js">const misNombres = ["Oluwatobi", "Sofela"];
const biografia = { ...misNombres, dirige: "codesweetly.com" };

console.log(biografia);

// La llamada de arriba devolverá:
{ 0: "Oluwatobi", 1: "Sofela", dirige: "codesweetly.com" }</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/ejemplo-propagacion-4?file=script.js">StackBlitz</a></strong></strong></p><p>En el fragmento anterior, hemos utilizado la propagación dentro del objeto <code>biografia</code> para expandir los valores de <code>misNombres</code> en propiedades individuales.</p><h3 id="lo-que-hay-que-saber-sobre-el-operador-de-propagaci-n">Lo que hay que saber sobre el operador de propagación</h3><p>Tenga en cuenta estos tres datos esenciales siempre que decida utilizar el operador de propagación.</p><h4 id="informaci-n-1-los-operadores-de-propagaci-n-no-pueden-expandir-los-valores-de-los-objetos-literales">Información 1: Los operadores de propagación no pueden expandir los valores de los objetos literales</h4><p>Dado que un objecto de propiedades no es un objeto iterable, no puedes utilizar el operador de propagación para expandir sus valores.</p><p>Sin embargo, puedes utilizar el operador de propagación para clonar propiedades de un objeto a otro.</p><p><strong>He aquí un ejemplo:</strong></p><pre><code class="language-js">const miNombre = { primerNombre: "Oluwatobi", apellido: "Sofela" };
const biografia = { ...miNombre, sitioWeb: "codesweetly.com" };

console.log(biografia);

// La llamada de arriba retornará:
{ primerNombre: "Oluwatobi", apellido: "Sofela", sitioWeb: "codesweetly.com" };</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/propagacion-para-clonar?file=script.js">StackBlitz</a></strong></strong></p><p>El fragmento anterior utilizó el operador de propagación para clonar el contenido de <code>miNombre</code> en el objeto <code>biografia</code>.</p><p><strong>Nota<strong>:</strong></strong></p><ul><li>El operador de propagación sólo puede expandir los valores de los objetos iterables.</li><li>Un objeto es iterable sólo si él (o cualquier objeto en su cadena de prototipos) tiene una propiedad con una clave <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Iteration_protocols">@@iterator</a>.</li><li><a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator">Array</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/@@iterator">TypedArray</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator">String</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/@@iterator">Map</a>, y <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Set/@@iterator">Set</a> son todos tipos iterables incorporados porque tienen la propiedad <code>@@iterator</code> por defecto.</li><li>Un objeto no es un tipo de datos iterable porque no tiene la propiedad <code>@@iterator</code> por defecto.</li><li>Puedes hacer que un <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator">objeto sea iterable</a> añadiéndole <code>@@iterator</code>.</li></ul><h4 id="informaci-n-2-el-operador-de-propagaci-n-no-clona-propiedades-id-nticas"><strong>Info</strong>rmación 2: El operador de propagación no clona propiedades idénticas</h4><p>Supón que utilizas el operador de propagación para clonar propiedades del objeto A en el objeto B. Y supón que el objeto B contiene propiedades idénticas a las del objeto A. En tal caso, las versiones de B anularán las de A.</p><p><strong>He aquí un ejemplo:</strong></p><pre><code class="language-js">const miNombre = { primerNombre: "Tobi", apellido: "Sofela" };
const biografia = { ...miNombre, primerNombre: "Oluwatobi", sitioWeb: "codesweetly.com" };

console.log(biografia);

// La llamada de arriba devolverá:
{ primerNombre: "Oluwatobi", apellido: "Sofela", sitioWeb: "codesweetly.com" };</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/objeto-padre-anula?file=script.js">StackBlitz</a></strong></strong></p><p>Observe que el operador de propagación no ha copiado la propiedad <code>miNombre</code> de <code>primerNombre</code> en el objeto <code>biografia</code> porque <code>biografia</code> ya contiene una propiedad <code>primerNombre</code>.</p><h4 id="informaci-n-3-cuidado-con-el-funcionamiento-de-propagaci-n-cuando-se-utiliza-en-objetos-que-no-son-primitivos-"><strong>I</strong>nformación 3: ¡Cuidado con el funcionamiento de propagación cuando se utiliza en objetos que no son primitivos!</h4><p>Supón que utilizas el operador propagación en un objeto (o arreglo) que contiene sólo valores primitivos. El ordenador no creará ninguna referencia entre el objeto original y el duplicado.</p><p>Por ejemplo, considera este código de abajo:</p><pre><code class="language-js">const miNombre = ["Sofela", "es", "mi"];
const sobreMi = ["Oluwatobi", ...miNombre, "nombre."];

console.log(sobreMi);

// La llamada de arriba devolverá:
["Oluwatobi", "Sofela", "es", "mi", "nombre."]</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/propagacion-literal-de-arreglo?file=script.js">StackBlitz</a></strong></strong></p><p>Observa que cada elemento de <code>miNombre</code> es un valor primitivo. Por lo tanto, cuando usamos el operador de propagación para clonar <code>miNombre</code> en <code>sobreMi</code>, el ordenador no creó ninguna referencia entre los dos arreglos.</p><p>Como tal, cualquier alteración que hagas a <code>miNombre</code> no se reflejará en <code>sobreMi</code>, y viceversa.</p><p>Como ejemplo, vamos a añadir más contenido a <code>miNombre</code>:</p><pre><code class="language-js">miNombre.push("verdadero");</code></pre><p>Ahora, vamos a comprobar el estado actual de <code>miNombre</code> y <code>sobreMi</code>:</p><pre><code class="language-js">console.log(miNombre); // ["Sofela", "es", "mi", "verdadero"]

console.log(sobreMi); // ["Oluwatobi", "Sofela", "es", "mi", "verdadero."]</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/alteraciones?file=script.js">StackBlitz</a></strong></strong></p><p>Observe que el contenido actualizado de <code>miNombre</code> no se reflejó en <code>sobreMi</code> — porque la propagación no creó ninguna referencia entre el arreglo original y el duplicado.</p><h5 id="-qu-pasa-si-minombre-contiene-elementos-no-primitivos">¿Qué pasa si <code>miNombre</code> contiene elementos no primitivos?</h5><p>Supongamos que <code>miNombre</code> contiene elementos no primitivos. En ese caso, la propagación creará una referencia entre el original no primitivo y el clonado.</p><p><strong>He aquí un ejemplo:</strong></p><pre><code class="language-js">const miNombre = [["Sofela", "es", "mi"]];
const sobreMi = ["Oluwatobi", ...miNombre, "nombre."];

console.log(sobreMi);

// La llamada de arriba retornará:
[ "Oluwatobi", ["Sofela", "es", "mi"], "nombre." ]</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/valor-no-primitivo?file=script.js">StackBlitz</a></strong></strong></p><p>Observe que <code>miNombre</code> contiene un valor no primitivo .</p><p>Por lo tanto, el uso del operador de propagación para clonar el contenido de <code>miNombre</code> en <code>sobreMi</code> hizo que el ordenador creara una referencia entre los dos arreglos.</p><p>Como tal, cualquier alteración que haga en la copia de <code>miNombre</code> se reflejará en la versión de <code>sobreMi</code>, y viceversa.</p><p>Como ejemplo, vamos a añadir más contenido a <code>miNombre</code>:</p><pre><code class="language-js">miNombre[0].push("verdadero");</code></pre><p>Ahora, vamos a comprobar el estado actual de <code>miNombre</code> y <code>sobreMi</code>:</p><pre><code class="language-js">console.log(miNombre); // [["Sofela", "es", "mi", "verdadero"]]

console.log(sobreMi); // ["Oluwatobi", ["Sofela", "es", "mi", "verdadero"], "nombre."]</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/alteraciones-se-reflejan?file=script.js">StackBlitz</a></strong></strong></p><p>Observe que el contenido actualizado de <code>miNombre</code> se refleja en <code>sobreMi</code> — porque la propagación creó una referencia entre el arreglo original y el duplicado.</p><p><strong>Aquí hay otro ejemplo:</strong></p><pre><code class="language-js">const miNombre = { primerNombre: "Oluwatobi", apellido: "Sofela" };
const biografia = { ...miNombre };

miNombre.primerNombre = "Tobi";

console.log(miNombre); // { primerNombre: "Tobi", apellido: "Sofela" }

console.log(biografia); // { primerNombre: "Oluwatobi", apellido: "Sofela" }</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/propagacion-no-se-reflejara?file=script.js">StackBlitz</a></strong></strong></p><p>En el fragmento anterior, la actualización de <code>miNombre</code> no se reflejó en <code>biografia</code> porque utilizamos el operador de propagación en un objeto que sólo contiene valores primitivos.</p><p><strong>Nota</strong>: Un desarrollador llamaría a <code>miNombre</code> un <strong>objeto profundo</strong> porque contiene sólo elementos primitivos.</p><p><strong>Aquí hay un ejemplo más:</strong></p><pre><code class="language-js">const miNombre = { 
  nombreCompleto: { primerNombre: "Oluwatobi", apellido: "Sofela" }
};

const biografia = { ...miNombre };

miNombre.nombreCompleto.primerNombre = "Tobi";

console.log(miNombre); // { nombreCompleto: { primerNombre: "Tobi", apellido: "Sofela" } }

console.log(biografia); // { nombreCompleto: { primerNombre: "Tobi", apellido: "Sofela" } }</code></pre><p><strong>Pruébalo en <strong><a href="https://stackblitz.com/edit/propagacion-se-reflejara?file=script.js">StackBlitz</a></strong></strong></p><p>En el fragmento anterior, la actualización de <code>miNombre</code> se refleja en <code>biografia</code> porque hemos utilizado el operador de propagación en un objeto que contiene un valor no primitivo.</p><p><strong>Nota<strong>:</strong></strong></p><ul><li>Llamamos a <code>miNombre</code> <strong>objeto profundo</strong> porque contiene un elemento no primitivo.</li><li>La <strong>copia profunda</strong> se realiza cuando se crean referencias al clonar un objeto en otro. Por ejemplo, <code>...miNombre</code> produce una copia profunda del objeto <code>miNombre</code> porque cualquier alteración que hagas en uno se reflejará en el otro.</li><li>La <strong>copia profunda</strong> se realiza cuando se clonan objetos sin crear referencias. Por ejemplo, podría copiar <code>miNombre</code> en <code>biografia</code> haciendo <code>const biografia = JSON.parse(JSON.stringify(miNombre))</code>. Haciendo esto, el ordenador clonará <code>miNombre</code> en <code>biografia</code> sin crear ninguna referencia.</li><li>Puedes romper la referencia entre los dos objetos reemplazando el objeto <code>nombreCompleto</code> dentro de <code>miNombre</code> o <code>biografia</code> con un nuevo objeto. Por ejemplo, haciendo <code>miNombre.nombreCompleto = { primerNombre: "Tobi", apellido: "Sofela" }</code> desconectaría el puntero entre <code>miNombre</code> y <code>biografia</code>.</li></ul><h2 id="para-terminar">Para terminar</h2><p>En este artículo se han tratado las diferencias entre los operadores rest y propagación. También hemos utilizado ejemplos para ver cómo funciona cada operador.</p><p>Gracias por leerlo!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo formatear fechas en JavaScript con una línea de código ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por: Joel Olawanle [https://www.freecodecamp.org/news/author/joel-olawanle/] Artículo original: How to Format Dates in JavaScript with One Line of Code [https://www.freecodecamp.org/news/how-to-format-dates-in-javascript/] Traducido y adaptado por: Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] Durante mucho tiempo, he utilizado librerías como Date-fns siempre que he necesitado formatear fechas en JavaScript. Pero se hace muy raro ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-formatear-fechas-en-javascript-con-una-linea-de-codigo/</link>
                <guid isPermaLink="false">621e85415e4d0b08bcc777a9</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Sat, 05 Mar 2022 03:12:50 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/03/Formatting-Date-in-JavaScript-with-1-line-of-code.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original escrito por</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/joel-olawanle/">Joel Olawanle</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/how-to-format-dates-in-javascript/">How to Format Dates in JavaScript with One Line of Code</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Traducido y adaptado por</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong><a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p>Durante mucho tiempo, he utilizado librerías como <code>Date-fns</code> siempre que he necesitado formatear fechas en JavaScript. Pero se hace muy raro cada vez que lo hago en pequeños proyectos que requieren formatos de fecha simples que JavaScript ofrece por defecto.</p><p>Descubrí que la mayoría de los desarrolladores lo hacen mucho. Y pensé que era la mejor manera hasta que recientemente descubrí que <strong>no siempre necesitamos usar bibliotecas</strong> para formatear fechas en JavaScript.</p><p>En caso de que tengas curiosidad por probarlo, aquí tienes el código:?</p><pre><code class="language-javascript">new Date().toLocaleDateString('en-us', { weekday:"long", year:"numeric", month:"short", day:"numeric"}) 
// "Friday, Jul 2, 2021"</code></pre><p>Después de probar esto en tu propio código y ver que funciona, vamos a entender por qué funciona y aprender otras formas de formatear fechas en JavaScript con una sola línea de código.</p><h1 id="c-mo-formatear-fechas-en-js">Cómo formatear fechas en JS</h1><p>Obtener la fecha en JavaScript no suele ser un problema, pero formatear estas fechas para que se adapten a tu proyecto puede ser engorroso para los principiantes. Por ello, la mayoría de la gente acaba utilizando bibliotecas.</p><p>El método más utilizado para obtener la fecha en JavaScript es el objeto <code>new Date()</code>.</p><p>Por defecto, cuando ejecutas <code>new Date()</code> en tu terminal, utiliza la zona horaria de tu navegador y muestra la fecha como una cadena de texto completa, como <strong><strong>Fri Jul 02 2021 12:44:45 GMT+0100 (</strong>horario de verano Británico<strong>).</strong></strong></p><p>Pero tener algo así en tu página web o aplicación no es profesional y no es fácil de leer. Así que esto te obliga a buscar mejores formas de formatear estas fechas.</p><p>Veamos algunos métodos que operan sobre el objeto date.</p><h1 id="los-m-todos-de-date-en-javascript">Los métodos de date en JavaScript</h1><p>Hay muchos métodos que se pueden aplicar al objeto date. Puedes utilizar estos métodos para obtener información de un objeto date. Aquí están algunos de ellos:</p><ul><li><code>getFullYear()</code> – obtiene el año en formato de cuatro dígitos (yyyy)</li><li><code>getMonth()</code> – recibe el mes como un número (0-11)</li><li><code>getDate()</code> – obtiene el día como un número (1-31)</li><li><code>getHours()</code> – obtiene la hora (0-23)</li></ul><p>Y mucho más...</p><p>Desgraciadamente, la mayoría de estos métodos siguen necesitando mucho código para convertir las fechas al formato que deseamos.</p><p>Por ejemplo, &nbsp;<code>new Date().getMonth()</code> dará como resultado 6, que significa <strong>julio</strong>. Para usar julio en mi proyecto, necesitaré tener un código largo como este que puede ser realmente engorroso:</p><pre><code class="language-javascript">const mesActual = new Date();
const meses = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Setiembre", "Octubre", "Noviembre", "Diciembre"];
console.log(meses[mesActual.getMonth()]);</code></pre><p>Veamos dos métodos que puedes utilizar para formatear tus fechas de la mejor manera para que puedas utilizarlas en tus proyectos.</p><h2 id="el-m-todo-todatestring-en-javascript">El método <code>toDateString()</code> en JavaScript</h2><p>El método de JavaScript <code>toDateString()</code> devuelve la parte de la fecha de un objeto date en forma de cadena utilizando el siguiente formato:</p><ol><li>Tres primeras letras del nombre del día de la semana</li><li>Tres primeras letras del nombre del mes</li><li>Dos dígitos del día del mes, rellenados a la izquierda con un cero si es necesario</li><li>Año de cuatro dígitos (como mínimo), rellenado a la izquierda con ceros si es necesario</li></ol><pre><code class="language-javascript">new Date().toDateString();
//"Fri Jul 02 2021"</code></pre><p>Una de las principales desventajas de este método es la imposibilidad de manipular la salida de la fecha de la manera que queremos.</p><p>Por ejemplo, no nos da la posibilidad de mostrar las fechas según nuestro idioma. Veamos otro método que para mí sigue siendo uno de los mejores.</p><h2 id="el-m-todo-tolocaledatestring-en-javascript">El método <code>toLocaleDateString()</code> en JavaScript</h2><p>Este método devuelve el objeto date como una cadena utilizando las convenciones locales. También toma opciones como argumentos que le permiten a usted/sus aplicaciones personalizar el comportamiento de la función.</p><p><strong>Sintaxis<strong>:</strong></strong></p><pre><code class="language-javascript">toLocaleDateString()
toLocaleDateString(localizaciones)
toLocaleDateString(localizaciones, opciones)</code></pre><p>Veamos algunos ejemplos y sus resultados:</p><pre><code class="language-javascript">const fechaActual = new Date();

const opciones = { weekday: 'long', year: 'numeric', month: 'short', day: 'numeric' };

console.log(fechaActual.toLocaleDateString('de-DE', opciones));
//Freitag, 2. Juli 2021

console.log(fechaActual.toLocaleDateString('ar-EG', opciones))
// الجمعة، ٢ يوليو ٢٠٢١

console.log(fechaActual.toLocaleDateString('en-us', opciones));
//Friday, Jul 2, 2021</code></pre><p><br>También puede decidir no utilizar ni locales ni opciones:</p><pre><code class="language-javascript">new Date().toLocaleDateString()
// "7/2/2021"</code></pre><p>Y también puede decidir usar sólo las localizaciones. Esto producirá la misma información que la anterior basada en la zona horaria de mi navegador.</p><pre><code class="language-javascript">new Date().toLocaleDateString('en-US')
"7/2/2021"</code></pre><p>También puedes decidir girar las opciones como quieras. Hay 4 opciones básicas que son:</p><ul><li><code>weekday</code> – Esto produce el día de la semana dependiendo de cómo quieras que aparezca (short or long).</li><li><code>year</code> – Esto hace que el año sea un número</li><li><code>month</code> – Esto genera el mes del año dependiendo de cómo quieras que aparezca (short or long).</li><li><code>day</code> – Por último, esto produce el día como un número</li></ul><pre><code class="language-javascript">new Date().toLocaleDateString('en-us', { weekday:"long", year:"numeric", month:"short"}) // "Jul 2021 Friday"

new Date().toLocaleDateString('en-us', { year:"numeric", month:"short"})
// "Jul 2021"</code></pre><h1 id="conclusi-n">Conclusión</h1><p>El objeto date tiene unos siete métodos de formateo. Cada uno de estos métodos le da un valor específico:</p><ol><li><code>toString()</code> te entrega <strong><strong>Fri Jul 02 2021 14:03:54 GMT+0100 (</strong>Horario de verano británico<strong>)</strong></strong></li><li><code>toDateString()</code> te entrega <strong><strong>Fri Jul 02 2021</strong></strong></li><li><code>toLocaleString()</code> te entrega <strong><strong>7/2/2021, 2:05:07 PM</strong></strong></li><li><code>toLocaleDateString()</code> te entrega <strong><strong>7/2/2021</strong></strong></li><li><code>toGMTString()</code> te entrega <strong><strong>Fri, 02 Jul 2021 13:06:02 GMT</strong></strong></li><li><code>toUTCString()</code> te entrega <strong><strong>Fri, 02 Jul 2021 13:06:28 GMT</strong></strong></li><li><code>toISOString()</code> te entrega <strong><strong>2021-07-02T13:06:53.422Z</strong></strong></li></ol><p>Si está buscando formatos de fecha más avanzados, entonces tendrá que crear un formato personalizado por sí mismo.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Juegos de Google Doodle: Béisbol, PacMan y más ]]>
                </title>
                <description>
                    <![CDATA[ La página de inicio del motor de búsqueda de Google es la página web más vista del mundo. La gente realiza miles de millones de búsquedas cada día. Al entrar en la página, justo encima del cuadro de búsqueda, verás el logotipo de Google. En muchas ocasiones el logo será ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/juegos-de-google-beisbol-pacman-y-mas/</link>
                <guid isPermaLink="false">621cff8c5e4d0b08bcc77505</guid>
                
                    <category>
                        <![CDATA[ google ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Sat, 05 Mar 2022 03:03:57 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/google-doodle-article-image.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>La página de inicio del motor de búsqueda de Google es la página web más vista del mundo. La gente realiza miles de millones de búsquedas cada día.</p><p>Al entrar en la página, justo encima del cuadro de búsqueda, verás el logotipo de Google. En muchas ocasiones el logo será diferente y estará acompañado de lo que se llama un Doodle.</p><p>Estos Doodles van desde pequeñas, simples y temporales alteraciones del logo tradicional. Pero lo más frecuente es que sean expresiones muy creativas y artísticas.</p><p>Destacan temas mundiales, acontecimientos históricos importantes, fiestas mundiales, celebraciones locales, aniversarios y cumpleaños de personajes importantes (incluidos pioneros, artistas y científicos) junto con sus contribuciones a la sociedad.</p><p>Cuando se hace clic en la animación del Doodle se puede encontrar más información sobre ese tema específico y un pequeño juego o interacción que a veces acompaña al doodle.</p><h2 id="el-primer-doodle-de-google">El primer Doodle de Google</h2><p>El primer doodle se creó cuando los cofundadores de Google, Larry Page y Sergey Brin, asistieron al festival anual Burning Man, en el desierto de Nevada (Estados Unidos), el 30 de agosto de 1998.</p><p>Colocaron un icono de una figura de palo, parecido al logotipo de Burning Man, detrás de la segunda "O" como mensaje de "Fuera de la oficina" para avisar a los usuarios de su ausencia de una forma divertida y creativa.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-25-at-10.43.13-AM.png" class="kg-image" alt="Screenshot-2021-07-25-at-10.43.13-AM" width="600" height="400" loading="lazy"></figure><p>Google era muy joven en ese momento: solo hacía un par de años que el motor de búsqueda había sido construido por estos dos estudiantes de Stanford. Y esto fue poco menos de una semana antes de que se constituyera oficialmente como empresa.</p><p>También puede ver que el logotipo era diferente, con un signo de exclamación al final.</p><h2 id="el-desarrollo-de-los-doodles-de-google">El desarrollo de los Doodles de Google</h2><p>Desde entonces, nació esta nueva idea de alterar el logotipo cuando se celebran acontecimientos notables, y los Doodles progresaron.</p><p>Casi dos años después, Page y Brin pidieron a Dennis Hwang, un becario en ese momento, que creara un doodle en honor al Día de la Bastilla, el 14 de julio de 2000. Fue muy bien recibido y Dennis Hwang fue nombrado Jefe de Doodler.</p><p>Los Doodles empezaron a aparecer con más regularidad en la página de inicio.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-25-at-11.03.13-AM.png" class="kg-image" alt="Screenshot-2021-07-25-at-11.03.13-AM" width="600" height="400" loading="lazy"></figure><p>Desde entonces, Google cuenta con todo un equipo de ilustradores de gran talento (llamados doodlers) responsables del doodle que aparece en la página principal de Google para todo el mundo.</p><p>Los primeros doodles eran bastante sencillos. Al pasar el ratón por encima del doodle, aparecía un pequeño texto emergente que indicaba lo que se conmemoraba.</p><p>Para Halloween del año 2000, la artista invitada Lorie Loeb creó el primer doodle animado. En él aparecían dos linternas en lugar de la "O" y una araña colgando de la "L".</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/halloween_loop.gif" class="kg-image" alt="halloween_loop" width="600" height="400" loading="lazy"></figure><p>Otro doodle notable relacionado con la tecnología y la nostalgia fue el del 12 de marzo de 2019, en el que Google conmemoró el 30 aniversario de la World Wide Web.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/30th-anniversary-of-the-world-wide-web-4871946884874240-2xa-1.gif" class="kg-image" alt="30th-anniversary-of-the-world-wide-web-4871946884874240-2xa-1" width="600" height="400" loading="lazy"></figure><p>Puedes ver un <a href="https://www.google.com/doodles/?hl=es-419#archive">archivo histórico</a> de todos los Doodles de Google que han aparecido en la página principal, lo que te permite revivir cualquier Doodle y descubrir otros nuevos que quizá no hayas visto.</p><h2 id="el-primer-juego-de-google-doodle">El primer juego de Google Doodle</h2><p>La tecnología del doodle siguió mejorando, y el 21 de mayo de 2010 Google lanzó su primer juego interactivo: el primer Doodle Google jugable.</p><p>Este lanzamiento celebra el 30º aniversario de uno de los juegos árcade más populares y clásicos, Pac Man, que fue lanzado en 1980.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-25-at-4.57.49-PM.png" class="kg-image" alt="Screenshot-2021-07-25-at-4.57.49-PM" width="600" height="400" loading="lazy"></figure><p>Fue un gran avance para Google y debió alegrar los días de muchas personas al recuperar un juego tan divertido y adictivo. Se calcula que más de mil millones de personas jugaron al juego en los tres primeros días de su lanzamiento.</p><p>El juego PacMan doodle nos trae recuerdos nostálgicos de los 8 bits, ya que utiliza los mismos gráficos y los mismos colores, sonidos y personajes icónicos originales. Incluso incluye la misma lógica y los mismos errores del juego original (!).</p><p>Si quieres hacer un viaje al pasado o conocer el juego por primera vez, puedes jugar <a href="https://www.google.com/doodles/30th-anniversary-of-pac-man">aquí</a>.</p><p>Sólo tienes que pulsar "Insert Coin" y utilizar las teclas de flecha de tu teclado. Eres un héroe amarillo cuyo objetivo es comer todos los puntos sin que te atrapen los fantasmas de diferentes colores.</p><p>Prepárate para pasar demasiadas horas en este caso.</p><h2 id="c-mo-jugar-a-los-juegos-de-google-doodle">Cómo jugar a los juegos de Google Doodle</h2><p>Desde entonces ha habido muchos más juegos y rompecabezas divertidos e interactivos.</p><p>Los doodles y los juegos suelen estar activos durante un día para conmemorar un evento específico. Pero Google archiva todos sus doodles y juegos de doodles antiguos en la <a href="https://www.google.com/doodles?q=interactive">página de archivo dedicada</a>, en lugar de deshacerse de ellos.</p><p>Gracias a esto, puedes jugar a cualquiera de los juegos que han aparecido en la página principal del buscador.</p><p>Jugar con ellos es fácil y sin complicaciones.</p><p>Todos ellos están basados en la web y pueden jugarse tanto en el ordenador como en el móvil sin necesidad de descargar nada ni de instalar una consola. No necesitas ningún equipo, solo un navegador y una conexión a Internet.</p><p>Haga clic en los enlaces para ir a la página del juego específico y luego haga clic para iniciar el juego.</p><p>En la mayoría de los casos, utilizarás el ratón o el trackpad y el teclado. Si juegas desde un móvil, lo harás deslizando o tocando.</p><h2 id="juegos-populares-de-google-doodle">Juegos populares de Google Doodle</h2><p>A continuación se presenta una lista de algunos de los juegos de doodle más conocidos y populares, agrupados en función de diferentes categorías.</p><h3 id="juegos-de-ingenio-de-doodle">Juegos de ingenio de Doodle</h3><h4 id="el-cubo-de-rubik">El cubo de Rubik</h4><p><a href="https://www.google.com/doodles/rubiks-cube?hl=es-419">El cubo de Rubik</a> apareció en la página principal el 19 de mayo de 2014 y es uno de los mayores y más fascinantes desafíos mentales.</p><p>Los colores se mueven horizontalmente, pero puedes mover sus piezas haciendo clic en cualquier parte del cubo para girarlo en todos sus lados.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/rubik-1.gif" class="kg-image" alt="rubik-1" width="600" height="400" loading="lazy"></figure><h4 id="crucigramas">Crucigramas</h4><p>El 21 de diciembre de 2013, Google sacó un homenaje a los <a href="https://www.google.com/logos/2013/crossword/crossword13.html">crucigramas</a> para conmemorar los 100 años de los mismos.</p><p>Con la ayuda de Merl Reagle, uno de los mejores y más conocidos instructores de crucigramas, Google creó su propia versión de un crucigrama con pistas. También compartió trozos de la historia de los crucigramas.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-25-at-8.13.01-PM.png" class="kg-image" alt="Screenshot-2021-07-25-at-8.13.01-PM" width="600" height="400" loading="lazy"></figure><h3 id="juegos-de-codificaci-n-de-doodle">Juegos de codificación de Doodle</h3><h4 id="coding-for-carrots"><strong><strong>Coding for carrots</strong></strong></h4><p><a href="https://www.google.com/doodles/celebrating-50-years-of-kids-coding">Coding for carrots</a> introduce a los niños (¡o a ti!) en el mundo de la programación conectando bloques que representan conceptos de codificación. Esto ayuda a guiar a un conejo a través de 6 niveles para llegar a su comida favorita, una zanahoria y recogerla.</p><p>El juego se lanzó el 4 de diciembre de 2017 durante la semana de la Educación en Ciencias de la Computación en colaboración con el MIT para celebrar los 50 años de Kids Coding y de los lenguajes de codificación para niños. Está basado en el lenguaje de programación Scratch.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/carrot.gif" class="kg-image" alt="carrot" width="600" height="400" loading="lazy"></figure><h3 id="juegos-de-doodle-para-los-aficionados-al-deporte">Juegos de Doodle para los aficionados al deporte</h3><h4 id="cricket"><strong><strong>Cricket</strong></strong></h4><p><a href="https://www.google.com/doodles/icc-champions-trophy-2017-begins">Cricket</a> se introdujo para celebrar el Trofeo de Campeones de la ICC de 2017 y se juega al cricket como un grillo animado.</p><p>Sólo tienes que pulsar sobre el bate para balancearlo cuando veas que la pelota viene hacia ti y quieras golpearla para marcar. Es una inteligente recreación de este deporte.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/cricket.gif" class="kg-image" alt="cricket" width="600" height="400" loading="lazy"></figure><h4 id="b-isbol">Béisbol</h4><p>El <a href="https://www.google.com/doodles/fourth-of-july-2019">béisbol</a> se introdujo en honor al 4 de julio, día de la Independencia de Estados Unidos, en 2019. Los jugadores son los clásicos bocadillos americanos como perritos calientes, patatas fritas y ketchup.</p><p>Haz clic para golpear el bate y, si eres como yo, prepárate para escuchar muchas veces "You're Out" (si no, verás muchos fuegos artificiales).<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/4th.gif" class="kg-image" alt="4th" width="600" height="400" loading="lazy"></figure><h4 id="baloncesto">Baloncesto</h4><p>El <a href="https://www.google.com/doodles/basketball-2012">baloncesto</a> salió en 2012, en honor a los juegos olímpicos de verano de 2012 con este juego de baloncesto interactivo. Se trata de encestar el mayor número de canastas en 24 segundos.</p><p>Además de este juego, para ese periodo Google lanzó otros tres juegos deportivos interactivos por separado, como el <a href="https://www.google.com/doodles/soccer-2012">Fútbol</a>. En este juego eres un portero, y utilizas la tecla del espacio para evitar que el balón llegue a la red y las teclas de flecha para cambiar tu posición.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-26-at-2.48.47-PM.png" class="kg-image" alt="Screenshot-2021-07-26-at-2.48.47-PM" width="600" height="400" loading="lazy"></figure><h4 id="juegos-ol-mpicos-de-tokio-2020">Juegos Olímpicos de Tokio 2020</h4><p>Para celebrar los <a href="https://www.google.com/doodles/doodle-champion-island-games-july-24">Juegos Olímpicos de Tokio 2020</a>, Google ha lanzado su juego más ambicioso, elaborado y complejo hasta la fecha: un juego deportivo de anime completo llamado Doodle Champion Island Games.</p><p>Es un homenaje a los videojuegos japoneses retro de 16 bits, con 7 temas de eventos deportivos de minijuegos olímpicos para elegir (incluyendo tenis de mesa, skate y natación artística, entre otros). Es el juego más grande que ha lanzado Google.</p><p>Juegas como un gato guerrero ninja Calico llamado Lucky que llega a la isla donde se celebra el festival. Puedes elegir uno de los 4 equipos: el azul, el rojo, el amarillo o el verde, representados por Ushi, Karasu, Inari o Kappa.</p><p>Para jugar, utiliza las teclas de flecha y la barra espaciadora y rinde homenaje celebrando la historia, la cultura y los deportes japoneses a lo largo del juego. Se ha realizado en colaboración con el estudio de animación japonés Studio 4°C.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-26-at-11.01.56-AM.png" class="kg-image" alt="Screenshot-2021-07-26-at-11.01.56-AM" width="600" height="400" loading="lazy"></figure><h3 id="juegos-de-doodle-para-los-amantes-de-la-m-sica">Juegos de Doodle para los amantes de la música</h3><h4 id="celebrando-a-oskar-fischinger">Celebrando a Oskar Fischinger</h4><p><a href="https://www.google.com/doodles/oskar-fischingers-117th-birthday">Fischinger</a> se creó el 17 de junio de 2017 para celebrar el 117º cumpleaños de Oskar Fischinger.</p><p>Para homenajear al cineasta y artista visual, Google lanzó un diseño interactivo con una herramienta de composición de música visual, que permite a los usuarios hacer clic y crear sus propias piezas visuales de música con la amplia variedad de ajustes que puede cambiar.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-25-at-7.47.35-PM.png" class="kg-image" alt="Screenshot-2021-07-25-at-7.47.35-PM" width="600" height="400" loading="lazy"></figure><h4 id="celebrando-el-nacimiento-del-hip-hop">Celebrando el nacimiento del Hip Hop</h4><p><a href="https://www.google.com/doodles/44th-anniversary-of-the-birth-of-hip-hop">Hip Hop</a> fue lanzado para conmemorar el 44º aniversario del nacimiento del hip-hop, el 11 de agosto de 2017.</p><p>Con el crossfader podrás mezclar ritmos legendarios, cambiar el volumen y la intensidad de la velocidad al reproducir y elegir pistas. El tocadiscos interactivo de DJ clásico te permitirá cortar y rascar pistas y revivir la historia del hip-hop.</p><p>El grafiti fue realizado por el artista Cey Adams, y está narrado por el icono del hip hop Fab Five Freddy. Rinde homenaje a Kool Herc y Coke La Rock, los dos padres fundadores del hip hop.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-26-at-10.38.20-AM.png" class="kg-image" alt="Screenshot-2021-07-26-at-10.38.20-AM" width="600" height="400" loading="lazy"></figure><h4 id="rockmore"><strong><strong>Rockmore</strong></strong></h4><p><a href="https://www.google.com/doodles/clara-rockmores-105th-birthday">Rockmore</a> simula la experiencia del Theremin. Se trata de un instrumento musical electrónico que funciona sin contacto físico, sólo mediante controles gestuales.</p><p>El juego celebra el aniversario del 105 aniversario de Clara Rockmore, la inventora y la intérprete más conocida del instrumento, el 9 de marzo de 2016.</p><p>Te permitirá crear música y experimentar con los diferentes ajustes y replicar diferentes notas. Mueve el cursor o el ratón sobre las notas en la pantalla para crear música utilizando un Theremin virtual.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-26-at-4.07.53-PM.png" class="kg-image" alt="Screenshot-2021-07-26-at-4.07.53-PM" width="600" height="400" loading="lazy"></figure><h3 id="juegos-de-doodle-para-creativos">Juegos de Doodle para creativos</h3><h4 id="quick-draw"><strong><strong>Quick draw</strong></strong></h4><p><a href="https://quickdraw.withgoogle.com/">Quick draw!</a> es un juego que tiene su propia página web. En la pantalla se te dan instrucciones sobre lo que tienes que dibujar y un plazo de 20 segundos para hacerlo. La red neuronal de Google adivina y te dice a qué se parece tu dibujo.</p><p>El juego está construido con Machine Learning y es uno de los juegos Doodle más populares.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-25-at-7.53.52-PM.png" class="kg-image" alt="Screenshot-2021-07-25-at-7.53.52-PM" width="600" height="400" loading="lazy"></figure><h3 id="juegos-de-doodle-para-los-amantes-de-la-ciencia-ficci-n">Juegos de Doodle para los amantes de la ciencia ficción</h3><h4 id="doctor-who"><strong><strong>Doctor Who</strong></strong></h4><p>El juego de doodle de <a href="https://www.google.com/doodles/doctor-whos-50th-anniversary">Doctor Who</a>, lanzado el 23 de noviembre de 2013, fue creado para honrar el 50 aniversario del clásico y popular programa de televisión británico, Doctor Who.</p><p>Se trata de un sencillo, pero impresionante juego de rompecabezas de aventuras, en el que aparecen los 13 médicos de la época en que se hizo.</p><p>El objetivo es recuperar las 6 letras del logotipo de Google que los Daleks robaron a los médicos, superando los 6 niveles del juego.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-26-at-10.41.15-AM.png" class="kg-image" alt="Screenshot-2021-07-26-at-10.41.15-AM" width="600" height="400" loading="lazy"></figure><h3 id="juegos-de-comida-con-doodle">Juegos de comida con Doodle</h3><p><a href="https://www.google.com/doodles/wilbur-scovilles-151st-birthday">Scoville</a> salió a la venta el 22 de enero de 2016 para celebrar el 151º cumpleaños de Wilbur Scoville.</p><p>La escala Scoville es un sistema que mide lo picante que es un pimiento. En este juego, eres un helado que lucha contra pimientos picantes lanzándoles cucharadas. Los pimientos empiezan a ser progresivamente más picantes cada vez.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-26-at-10.55.11-AM.png" class="kg-image" alt="Screenshot-2021-07-26-at-10.55.11-AM" width="600" height="400" loading="lazy"></figure><h3 id="juegos-de-doodle-para-los-amantes-de-halloween">Juegos de Doodle para los amantes de Halloween</h3><h4 id="la-academia-del-gato-m-gico">La Academia del Gato Mágico</h4><p><a href="https://www.google.com/doodles/halloween-2016">La Academia del Gato Mágico</a> celebró Halloween en 2016 y sigue a una gata llamada Momo que quiere restablecer la paz en la Academia del Gato Mágico donde es alumna para poder rescatar la escuela.</p><p>La musa de este juego fue un gato negro que pertenece a la Doodler que construyó el juego, Juliana Chen.</p><p>Momo tiene que atravesar 5 niveles en su escuela: la biblioteca, la cafetería, el aula, el gimnasio y la azotea del edificio. Y por el camino tiene que pasar su varita para trazar símbolos sobre las cabezas de los fantasmas que aparecen. De este modo, Momo lanza hechizos y no consigue que los fantasmas que la acechan le quiten su libro de hechizos.</p><p>Utiliza el teclado para pasar por encima de las cabezas de los fantasmas y convertirlos en aire.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-26-at-3.39.40-PM.png" class="kg-image" alt="Screenshot-2021-07-26-at-3.39.40-PM" width="600" height="400" loading="lazy"></figure><h3 id="juegos-de-doodle-para-los-que-disfrutan-con-los-juegos-de-cartas">Juegos de Doodle para los que disfrutan con los juegos de cartas</h3><h4 id="loteria"><strong><strong>Loteria</strong></strong></h4><p><a href="https://www.google.com/doodles/celebrating-loteria">La lotería</a> es un juego de cartas tradicional mexicano. Puedes iniciar una partida con tus amigos o con personas al azar de todo el mundo.</p><p>Se lanzó el 9 de diciembre de 2019, celebrando este tradicional juego con una versión virtual. Hay un tutorial antes de tu primera ronda de prueba si nunca has jugado a la Lotería.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screenshot-2021-07-26-at-3.53.58-PM.png" class="kg-image" alt="Screenshot-2021-07-26-at-3.53.58-PM" width="600" height="400" loading="lazy"></figure><h2 id="conclusi-n">Conclusión</h2><p>Espero que hayas disfrutado de esta reseña de algunos de los Doodle Games más populares de Google para que los pruebes.</p><p>Hay muchos más disponibles en la <a href="https://www.google.com/doodles?q=interactive">página de archivos dedicada</a>, así que vaya a echar un vistazo y vea lo que le interesa.</p><p>Gracias por leer!</p><p>Derechos de autor: Todas las imágenes pertenecen a Google</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Códigos Alt: Cómo escribir caracteres especiales y símbolos del teclado en Windows utilizando las teclas Alt ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por: Quincy Larson [https://www.freecodecamp.org/news/author/quincylarson/] Artículo original: Alt Codes – How to Type Special Characters and Keyboard Symbols on Windows Using the Alt Keys [https://www.freecodecamp.org/news/alt-codes-special-characters-keyboard-symbols-windows-list/] Traducido y adaptado por: Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] En Windows, puedes escribir cualquier carácter que tú desees pulsando la tecla ALT, escribiendo una ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/codigos-alt-caracteres-especiales-lista-de-simbolos-del-teclado-en-windows/</link>
                <guid isPermaLink="false">621cf5195e4d0b08bcc77465</guid>
                
                    <category>
                        <![CDATA[ windows ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Fri, 04 Mar 2022 20:36:01 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/5f9c9ac9740569d1a4ca27c0.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original escrito por</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/quincylarson/">Quincy Larson</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/alt-codes-special-characters-keyboard-symbols-windows-list/">Alt Codes – How to Type Special Characters and Keyboard Symbols on Windows Using the Alt Keys</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Traducido y adaptado por</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong><a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p>En Windows, puedes escribir cualquier carácter que tú desees pulsando la tecla ALT, escribiendo una secuencia de números y soltando la tecla ALT.</p><p>Puedes escribir un montón de caracteres que quizá no tengan algunas teclas correspondientes en su teclado, como los caracteres alfabéticos de los idiomas europeos, los símbolos ASCII e incluso los caracteres chinos (también conocidos como Hanzi, Kanji o Hanja).</p><p>Estos códigos Alt también son útiles si tienes un teclado con una tecla atascada o ausente.</p><p>A continuación, desglosaré la lista completa de teclas alt por categorías. Pero primero, aquí está la lista completa. (Nota: esto no incluye muchos de los caracteres de los idiomas europeos o no occidentales, de lo contrario sería 100.000 códigos).</p><p>A continuación hay una bonita tabla con formato ASCII de los símbolos y caracteres más utilizados. Me llevó un tiempo reunirlos todos para que se vieran bien.</p><p>Como desarrollador, cuando busco estos códigos suelo obtener resultados basados en imágenes. Son inaccesibles para las personas con discapacidades visuales y dificultan que todo el mundo pueda copiar y pegar los códigos.</p><pre><code>
 Código Alt  Símbolo  
 ---------- -------- 
  alt 1      ☺       
  alt 2      ☻       
  alt 3      ♥       
  alt 4      ♦       
  alt 5      ♣       
  alt 6      ♠       
  alt 7      •       
  alt 8      ◘       
  alt 9      ○       
  alt 10     ◙       
  alt 11     ♂       
  alt 12     ♀       
  alt 13     ♪       
  alt 14     ♫       
  alt 15     ☼       
  alt 16     ►       
  alt 17     ◄       
  alt 18     ↕       
  alt 19     ‼       
  alt 20     ¶       
  alt 21     §       
  alt 22     ▬       
  alt 23     ↨       
  alt 24     ↑       
  alt 25     ↓       
  alt 26     →       
  alt 27     ←       
  alt 28     ∟       
  alt 29     ↔       
  alt 30     ▲       
  alt 31     ▼       
  alt 32             
  alt 33     !       
  alt 34     "       
  alt 35     #       
  alt 36     $       
  alt 37     %       
  alt 38     &amp;       
  alt 39     '       
  alt 40     (       
  alt 41     )       
  alt 42     *       
  alt 43     +       
  alt 44     ,       
  alt 45     -       
  alt 46     .       
  alt 47     /       
  alt 48     0       
  alt 49     1       
  alt 50     2       
  alt 51     3       
  alt 52     4       
  alt 53     5       
  alt 54     6       
  alt 55     7       
  alt 56     8       
  alt 57     9       
  alt 58     :       
  alt 59     ;       
  alt 60     &lt;       
  alt 61     =       
  alt 62     &gt;       
  alt 63     ?       
  alt 64     @       
  alt 65     A       
  alt 66     B       
  alt 67     C       
  alt 68     D       
  alt 69     E       
  alt 70     F       
  alt 71     G       
  alt 72     H       
  alt 73     I       
  alt 74     J       
  alt 75     K       
  alt 76     L       
  alt 77     M       
  alt 78     N       
  alt 79     O       
  alt 80     P       
  alt 81     Q       
  alt 82     R       
  alt 83     S       
  alt 84     T       
  alt 85     U       
  alt 86     V       
  alt 87     W       
  alt 88     X       
  alt 89     Y       
  alt 90     Z       
  alt 91     [       
  alt 91     [       
  alt 92     \       
  alt 92     \       
  alt 93     ]       
  alt 93     ]       
  alt 94     ^       
  alt 95     _       
  alt 96     `       
  alt 97     a       
  alt 98     b       
  alt 99     c       
  alt 100    d       
  alt 101    e       
  alt 102    f       
  alt 103    g       
  alt 104    h       
  alt 105    i       
  alt 106    j       
  alt 107    k       
  alt 108    l       
  alt 109    m       
  alt 110    n       
  alt 111    o       
  alt 112    p       
  alt 113    q       
  alt 114    r       
  alt 115    s       
  alt 116    t       
  alt 117    u       
  alt 118    v       
  alt 119    w       
  alt 120    x       
  alt 121    y       
  alt 122    z       
  alt 123    {       
  alt 124    |       
  alt 125    }       
  alt 126    ~       
  alt 127    ⌂       
  alt 155    ¢       
  alt 156    £       
  alt 157    ¥       
  alt 158    ₧       
  alt 159    ƒ       
  alt 164    ñ       
  alt 165    Ñ       
  alt 166    ª       
  alt 167    º       
  alt 168    ¿       
  alt 169    ®       
  alt 170    ¬       
  alt 171    ½       
  alt 172    ¼       
  alt 173    ¡       
  alt 174    «       
  alt 175    »       
  alt 176    ░       
  alt 177    ▒       
  alt 178    ▓       
  alt 179    │       
  alt 180    ┤       
  alt 181    ╡       
  alt 182    ╢       
  alt 183    ╖       
  alt 184    ╕       
  alt 185    ╣       
  alt 186    ║       
  alt 187    ╗       
  alt 188    ╝       
  alt 189    ╜       
  alt 190    ╛       
  alt 191    ┐       
  alt 192    └       
  alt 193    ┴       
  alt 194    ┬       
  alt 195    ├       
  alt 196    ─       
  alt 197    ┼       
  alt 198    ╞       
  alt 199    ╟       
  alt 200    ╚       
  alt 201    ╔       
  alt 202    ╩       
  alt 203    ╦       
  alt 204    ╠       
  alt 205    ═       
  alt 206    ╬       
  alt 207    ╧       
  alt 208    ╨       
  alt 209    ╤       
  alt 210    ╥       
  alt 211    ╙       
  alt 212    ╘       
  alt 213    ╒       
  alt 214    ╓       
  alt 215    ╫       
  alt 216    ╪       
  alt 217    ┘       
  alt 218    ┌       
  alt 219    █       
  alt 220    ▄       
  alt 221    ▌       
  alt 222    ▐       
  alt 223    ▀       
  alt 224    α       
  alt 225    ß       
  alt 226    Γ       
  alt 227    π       
  alt 228    Σ       
  alt 229    σ       
  alt 230    µ       
  alt 231    τ       
  alt 232    Φ       
  alt 233    Θ       
  alt 234    Ω       
  alt 235    δ       
  alt 236    ∞       
  alt 237    φ       
  alt 238    ε       
  alt 239    ∩       
  alt 240    ≡       
  alt 241    ±       
  alt 242    ≥       
  alt 243    ≤       
  alt 244    ⌠       
  alt 245    ⌡       
  alt 247    ≈       
  alt 248    °       
  alt 249    ·       
  alt 250    ·       
  alt 251    √       
  alt 252    ⁿ       
  alt 254    ■       
  alt 255            
  alt 0128   €       
  alt 0130   ‘       
  alt 0132   „       
  alt 0133   …       
  alt 0134   †       
  alt 0135   ‡       
  alt 0137   ‰       
  alt 0138   Š       
  alt 0139   ‹       
  alt 0140   Œ       
  alt 0142   Ž       
  alt 0145   ‘       
  alt 0146   ’       
  alt 0147   “       
  alt 0148   ”       
  alt 0151   —       
  alt 0153   ™       
  alt 0154   š       
  alt 0155   ›       
  alt 0156   œ       
  alt 0158   ž       
  alt 0159   Ÿ       
  alt 0164   ¤       
  alt 0166   ¦       
  alt 0168   ¨       
  alt 0169   ©       
  alt 0175   ¯       
  alt 0178   ²       
  alt 0179   ³       
  alt 0180   ´       
  alt 0183   ·       
  alt 0184   ¸       
  alt 0185   ¹       
  alt 0188   ¼       
  alt 0189   ½       
  alt 0190   ¾       
  alt 0192   À       
  alt 0193   Á       
  alt 0194   Â       
  alt 0195   Ã       
  alt 0196   Ä       
  alt 0197   Å       
  alt 0198   Æ       
  alt 0199   Ç       
  alt 0200   È       
  alt 0201   É       
  alt 0202   Ê       
  alt 0203   Ë       
  alt 0204   Ì       
  alt 0205   Í       
  alt 0206   Ï       
  alt 0207   Ï       
  alt 0208   Ð       
  alt 0210   Ò       
  alt 0211   Ó       
  alt 0212   Ô       
  alt 0213   Õ       
  alt 0214   Ö       
  alt 0215   ×       
  alt 0216   Ø       
  alt 0217   Ù       
  alt 0218   Ú       
  alt 0219   Û       
  alt 0220   Ü       
  alt 0221   Ý       
  alt 0222   Þ       
  alt 0223   ß       
  alt 0224   à       
  alt 0225   á       
  alt 0226   â       
  alt 0227   ã       
  alt 0228   ä       
  alt 0229   å       
  alt 0230   æ       
  alt 0231   ç       
  alt 0232   è       
  alt 0233   é       
  alt 0234   ê       
  alt 0235   ë       
  alt 0236   ì       
  alt 0237   í       
  alt 0238   î       
  alt 0239   ï       
  alt 0240   ð       
  alt 0242   ò       
  alt 0243   ó       
  alt 0244   ô       
  alt 0245   õ       
  alt 0246   ö       
  alt 0247   ÷       
  alt 0248   ø       
  alt 0249   ú       
  alt 0250   û       
  alt 0251   ü       
  alt 0252   ù       
  alt 0253   ý       
  alt 0254   þ       
  alt 0255   ÿ       </code></pre><p>Bien, ahora vamos a desglosar esta lista por secciones.</p><h1 id="los-c-digos-alt-de-los-emojis-y-otros-caracteres-divertidos">Los códigos Alt de los emojis y otros caracteres divertidos</h1><p>Los primeros 31 códigos alt están dedicados a personajes divertidos como caras felices, flechas y otros símbolos comunes:</p><pre><code> Código Alt  Símbolo  
 ---------- -------- 
  alt 1      ☺       
  alt 2      ☻       
  alt 3      ♥       
  alt 4      ♦       
  alt 5      ♣       
  alt 6      ♠       
  alt 7      •       
  alt 8      ◘       
  alt 9      ○       
  alt 10     ◙       
  alt 11     ♂       
  alt 12     ♀       
  alt 13     ♪       
  alt 14     ♫       
  alt 15     ☼       
  alt 16     ►       
  alt 17     ◄       
  alt 18     ↕       
  alt 19     ‼       
  alt 20     ¶       
  alt 21     §       
  alt 22     ▬       
  alt 23     ↨       
  alt 24     ↑       
  alt 25     ↓       
  alt 26     →       
  alt 27     ←       
  alt 28     ∟       
  alt 29     ↔       
  alt 30     ▲       
  alt 31     ▼ </code></pre><h1 id="los-c-digos-alt-para-las-letras-may-sculas-min-sculas-n-meros-y-s-mbolos-del-teclado">Los códigos Alt para las letras mayúsculas, minúsculas, números y símbolos del teclado</h1><p>Como he mencionado antes, puedes utilizar los códigos Alt para escribir caracteres que de otro modo podrías escribir en tu teclado. Esto es útil si una de las teclas de tu teclado no está en funcionamiento.</p><p>Los códigos Alt del 32 a 126 están dedicados a estas teclas. Y sí, Alt 32 es el carácter de espacio.</p><pre><code> Código Alt  Símbolo  
 ---------- --------
  alt 32             
  alt 33     !       
  alt 34     "       
  alt 35     #       
  alt 36     $       
  alt 37     %       
  alt 38     &amp;       
  alt 39     '       
  alt 40     (       
  alt 41     )       
  alt 42     *       
  alt 43     +       
  alt 44     ,       
  alt 45     -       
  alt 46     .       
  alt 47     /       
  alt 48     0       
  alt 49     1       
  alt 50     2       
  alt 51     3       
  alt 52     4       
  alt 53     5       
  alt 54     6       
  alt 55     7       
  alt 56     8       
  alt 57     9       
  alt 58     :       
  alt 59     ;       
  alt 60     &lt;       
  alt 61     =       
  alt 62     &gt;       
  alt 63     ?       
  alt 64     @       
  alt 65     A       
  alt 66     B       
  alt 67     C       
  alt 68     D       
  alt 69     E       
  alt 70     F       
  alt 71     G       
  alt 72     H       
  alt 73     I       
  alt 74     J       
  alt 75     K       
  alt 76     L       
  alt 77     M       
  alt 78     N       
  alt 79     O       
  alt 80     P       
  alt 81     Q       
  alt 82     R       
  alt 83     S       
  alt 84     T       
  alt 85     U       
  alt 86     V       
  alt 87     W       
  alt 88     X       
  alt 89     Y       
  alt 90     Z       
  alt 91     [       
  alt 91     [       
  alt 92     \       
  alt 92     \       
  alt 93     ]       
  alt 93     ]       
  alt 94     ^       
  alt 95     _       
  alt 96     `       
  alt 97     a       
  alt 98     b       
  alt 99     c       
  alt 100    d       
  alt 101    e       
  alt 102    f       
  alt 103    g       
  alt 104    h       
  alt 105    i       
  alt 106    j       
  alt 107    k       
  alt 108    l       
  alt 109    m       
  alt 110    n       
  alt 111    o       
  alt 112    p       
  alt 113    q       
  alt 114    r       
  alt 115    s       
  alt 116    t       
  alt 117    u       
  alt 118    v       
  alt 119    w       
  alt 120    x       
  alt 121    y       
  alt 122    z       
  alt 123    {       
  alt 124    |       
  alt 125    }       
  alt 126    ~    </code></pre><h1 id="c-digos-alt-para-las-monedas">Códigos Alt para las monedas</h1><p>Los siguientes códigos Alt se centran en las monedas, con algunos caracteres específicos del español también. Son útiles si necesitas escribir la letra ñ (española) o hacer signos de interrogación o exclamación al revés.</p><pre><code> Alt Code   Symbol  
 ---------- --------
  alt 127    ⌂       
  alt 155    ¢       
  alt 156    £       
  alt 157    ¥       
  alt 158    ₧       
  alt 159    ƒ       
  alt 164    ñ       
  alt 165    Ñ       
  alt 166    ª       
  alt 167    º       
  alt 168    ¿       
  alt 169    ®       
  alt 170    ¬       
  alt 171    ½       
  alt 172    ¼       
  alt 173    ¡       
  alt 174    «       
  alt 175    »       </code></pre><h2 id="c-digos-alt-para-s-mbolos-ascii-para-construir-interfaces-de-l-nea-de-comandos-y-arte-ascii">Códigos Alt para símbolos ASCII, para construir interfaces de línea de comandos y arte ASCII</h2><p>Esta es mi sección favorita, hay muchos símbolos ASCII que puedes usar para hacer menús de línea de comandos y arte ASCII.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/Dvg7i.png" class="kg-image" alt="Dvg7i" srcset="https://www.freecodecamp.org/espanol/news/content/images/2022/02/Dvg7i.png 600w" width="600" height="379" loading="lazy"><figcaption>Una captura de pantalla de Dwarf Fortress, un videojuego con gráficos realizados enteramente con caracteres ASCII.</figcaption></figure><pre><code> Código Alt  Símbolo  
 ---------- --------
  alt 176    ░       
  alt 177    ▒       
  alt 178    ▓       
  alt 179    │       
  alt 180    ┤       
  alt 181    ╡       
  alt 182    ╢       
  alt 183    ╖       
  alt 184    ╕       
  alt 185    ╣       
  alt 186    ║       
  alt 187    ╗       
  alt 188    ╝       
  alt 189    ╜       
  alt 190    ╛       
  alt 191    ┐       
  alt 192    └       
  alt 193    ┴       
  alt 194    ┬       
  alt 195    ├       
  alt 196    ─       
  alt 197    ┼       
  alt 198    ╞       
  alt 199    ╟       
  alt 200    ╚       
  alt 201    ╔       
  alt 202    ╩       
  alt 203    ╦       
  alt 204    ╠       
  alt 205    ═       
  alt 206    ╬       
  alt 207    ╧       
  alt 208    ╨       
  alt 209    ╤       
  alt 210    ╥       
  alt 211    ╙       
  alt 212    ╘       
  alt 213    ╒       
  alt 214    ╓       
  alt 215    ╫       
  alt 216    ╪       
  alt 217    ┘       
  alt 218    ┌       
  alt 219    █       
  alt 220    ▄       
  alt 221    ▌       
  alt 222    ▐       
  alt 223    ▀       
</code></pre><h2 id="c-digos-alt-para-s-mbolos-matem-ticos-y-otros-caracteres-no-ingleses">Códigos Alt para símbolos matemáticos y otros caracteres no ingleses</h2><p>Y, por supuesto, puedes escribir las letras griegas utilizando códigos alt. Estos son muy útiles para escribir formatos matemáticos donde quiera que los necesites. Para cualquier trabajo realmente pesado, probablemente querrás usar algo como TeX, pero si solo estás tratando de enviar una expresión matemática a través de un mensaje instantáneo, estos códigos alt pueden ser muy útiles.</p><pre><code> Código Alt  Símbolo  
 ---------- --------
  alt 224    α       
  alt 225    ß       
  alt 226    Γ       
  alt 227    π       
  alt 228    Σ       
  alt 229    σ       
  alt 230    µ       
  alt 231    τ       
  alt 232    Φ       
  alt 233    Θ       
  alt 234    Ω       
  alt 235    δ       
  alt 236    ∞       
  alt 237    φ       
  alt 238    ε       
  alt 239    ∩       
  alt 240    ≡       
  alt 241    ±       
  alt 242    ≥       
  alt 243    ≤       
  alt 244    ⌠       
  alt 245    ⌡       
  alt 247    ≈       
  alt 248    °       
  alt 249    ·       
  alt 250    ·       
  alt 251    √       
  alt 252    ⁿ       
  alt 254    ■       
  alt 255            
  alt 0128   €       
  alt 0130   ‘       
  alt 0132   „       
  alt 0133   …       
  alt 0134   †       
  alt 0135   ‡       
  alt 0137   ‰       
  alt 0138   Š       
  alt 0139   ‹       
  alt 0140   Œ       
  alt 0142   Ž       
  alt 0145   ‘       
  alt 0146   ’       
  alt 0147   “       
  alt 0148   ”       
  alt 0151   —       
  alt 0153   ™       
  alt 0154   š       
  alt 0155   ›       
  alt 0156   œ       
  alt 0158   ž       
  alt 0159   Ÿ       
  alt 0164   ¤       
  alt 0166   ¦       
  alt 0168   ¨       
  alt 0169   ©       
  alt 0175   ¯       
  alt 0178   ²       
  alt 0179   ³       
  alt 0180   ´       
  alt 0183   ·       
  alt 0184   ¸       
  alt 0185   ¹       
  alt 0188   ¼       
  alt 0189   ½       
  alt 0190   ¾       
  alt 0192   À       
  alt 0193   Á       
  alt 0194   Â       
  alt 0195   Ã       
  alt 0196   Ä       
  alt 0197   Å       
  alt 0198   Æ       
  alt 0199   Ç       
  alt 0200   È       
  alt 0201   É       
  alt 0202   Ê       
  alt 0203   Ë       
  alt 0204   Ì       
  alt 0205   Í       
  alt 0206   Ï       
  alt 0207   Ï       
  alt 0208   Ð       
  alt 0210   Ò       
  alt 0211   Ó       
  alt 0212   Ô       
  alt 0213   Õ       
  alt 0214   Ö       
  alt 0215   ×       
  alt 0216   Ø       
  alt 0217   Ù       
  alt 0218   Ú       
  alt 0219   Û       
  alt 0220   Ü       
  alt 0221   Ý       
  alt 0222   Þ       
  alt 0223   ß       
  alt 0224   à       
  alt 0225   á       
  alt 0226   â       
  alt 0227   ã       
  alt 0228   ä       
  alt 0229   å       
  alt 0230   æ       
  alt 0231   ç       
  alt 0232   è       
  alt 0233   é       
  alt 0234   ê       
  alt 0235   ë       
  alt 0236   ì       
  alt 0237   í       
  alt 0238   î       
  alt 0239   ï       
  alt 0240   ð       
  alt 0242   ò       
  alt 0243   ó       
  alt 0244   ô       
  alt 0245   õ       
  alt 0246   ö       
  alt 0247   ÷       
  alt 0248   ø       
  alt 0249   ú       
  alt 0250   û       
  alt 0251   ü       
  alt 0252   ù       
  alt 0253   ý       
  alt 0254   þ       
  alt 0255   ÿ       </code></pre><h2 id="gracias-por-hacer-uso-de-esta-gu-a-de-c-digos-alt">Gracias por hacer uso de esta guía de códigos Alt</h2><p>Espero que esta pequeña guía te haya resultado útil. Si lo ha sido, te animo a vincularla y compartirla con tus amigos, para que más personas puedan beneficiarse de ella.<br></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Ejemplo de stringify JSON: Cómo analizar un objeto JSON con JS ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por: Kris Koishigawa [https://www.freecodecamp.org/news/author/kris/] Artículo original: JSON Stringify Example – How to Parse a JSON Object with JS [https://www.freecodecamp.org/news/json-stringify-example-how-to-parse-a-json-object-with-javascript/] Traducido y adaptado por: Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] JSON, o JavaScript Object Notation, está por todas partes. Si alguna vez has utilizado una aplicación web, es muy probable ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/ejemplo-de-stringify-json-como-analizar-un-objeto-json-con-js/</link>
                <guid isPermaLink="false">62115e99ac7bdf0914b1f70c</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Wed, 23 Feb 2022 17:02:53 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/602358380a2838549dcc2554-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original escrito por</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/kris/">Kris Koishigawa</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/json-stringify-example-how-to-parse-a-json-object-with-javascript/">JSON Stringify Example – How to Parse a JSON Object with JS</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Traducido y adaptado por</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong><a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p>JSON, o JavaScript Object Notation, está por todas partes. Si alguna vez has utilizado una aplicación web, es muy probable que hayas hecho uso de JSON para estructurar, almacenar y transmitir datos entre sus servidores y tu dispositivo.</p><p>En este artículo, repasaremos brevemente las diferencias entre JSON y JavaScript, y luego pasaremos a las diferentes formas de analizar JSON con JavaScript en el navegador y en los proyectos de Node.js.</p><h2 id="diferencias-entre-json-y-javascript">Diferencias entre JSON y JavaScript</h2><p>Aunque JSON se parece a un JavaScript común, es mejor pensar en JSON como un formato de datos, similar a un archivo de texto. Sucede que JSON se inspira en la sintaxis de JavaScript, y por eso se parecen tanto.</p><p>Veamos los objetos JSON y los arreglos JSON y comparémoslos con sus homólogos de JavaScript.</p><h3 id="objetos-json-frente-a-objetos-literales-de-javascript">Objetos JSON frente a objetos literales de JavaScript</h3><p>En primer lugar, aquí hay un objeto JSON:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">{
  "nombre": "Jane Doe",
  "juego-favorito": "Stardew Valley",
  "suscriptor": false
}
</code></pre><figcaption>perfil-jane.json</figcaption></figure><p>La principal diferencia entre un objeto JSON y un objeto JavaScript normal -también llamado objeto literal - se reduce a las comillas. Todas las claves y valores de tipo cadena de un objeto JSON tienen que ir entre comillas dobles (<code>"</code>).</p><p>Los objetos literales de JavaScript son un poco más flexibles. Con los objetos literales, no es necesario encerrar las claves y las cadenas entre comillas dobles. En su lugar, puedes utilizar comillas simples (<code>'</code>), o no utilizar ningún tipo de comillas para las claves.</p><p>Este es el aspecto del código anterior como un objeto literal de JavaScript:</p><pre><code class="language-js">const perfil = {
  nombre: 'Jane Doe',
  'juego-favorito': 'Stardew Valley',
  suscriptor: false
}
</code></pre><p>Ten en cuenta que la clave <code>'favorite-game'</code> va entre comillas simples. En el caso de los objetos literales, tendrás que encerrar entre comillas las palabras separadas por guiones (<code>-</code>).</p><p>Si quieres evitar las comillas, puedes reescribir la clave para usar camel case (<code>juegoFavorito</code>) o separar las palabras con un guion bajo (<code>juego_favorito</code>) en su lugar.</p><h3 id="arreglos-json-vs-arreglos-javascript">Arreglos JSON vs. Arreglos JavaScript</h3><p>Los arreglos JSON funcionan prácticamente igual que los arreglos en JavaScript, y pueden contener cadenas, booleanos, números y otros objetos JSON. Por ejemplo:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">[
  {
    "nombre": "Jane Doe",
    "juego-favorito": "Stardew Valley",
    "suscriptor": false
  },
  {
    "nombre": "John Doe",
    "juego-favorito": "Dragon Quest XI",
    "suscriptor": true
  }
]
</code></pre><figcaption>perfiles.json</figcaption></figure><p>Esto es lo que se podrías ver en JavaScript:</p><pre><code class="language-js">const perfiles = [
  {
    nombre: 'Jane Doe',
    'juego-favorito': 'Stardew Valley',
    suscriptor: false
  },
  {
    nombre: 'John Doe',
    'juego-favorito': 'Dragon Quest XI',
    suscriptor: true
  }
];
</code></pre><h2 id="json-como-cadena">JSON como cadena</h2><p>Tal vez te preguntes, si hay objetos JSON y arreglos, ¿no podrías usarlo en tu programa como un objeto literal de JavaScript normal o un arreglo?</p><p>La razón por la que no se puede hacer esto es que JSON es realmente una cadena.</p><p>Por ejemplo, cuando se escribe JSON en un archivo separado como con <code>perfil-jane.json</code> o <code>perfiles.json</code>, ese archivo en realidad contiene texto en forma de un objeto o arreglo JSON, que resulta ser como JavaScript.</p><p>Y si haces una petición a una API, te retornará algo así:</p><pre><code>{"nombre":"Jane Doe","juego-favorito":"Stardew Valley","suscriptor":false}</code></pre><p>Al igual que con los archivos de texto, si quieres usar JSON en tu proyecto, tendrás que analizarlo o cambiarlo a algo que tu lenguaje de programación pueda entender. Por ejemplo, el análisis de un objeto JSON en Python creará un diccionario.</p><p>Una vez entendido esto, veamos diferentes formas de analizar JSON en JavaScript.</p><h2 id="c-mo-analizar-json-en-el-navegador">Cómo analizar JSON en el navegador</h2><p>Si estás trabajando con JSON en el navegador, probablemente estés recibiendo o enviando datos a través de una API.</p><p>Veamos un par de ejemplos.</p><h3 id="c-mo-analizar-json-con-fetch">Cómo analizar JSON con<strong> <code>fetch</code></strong></h3><p>La forma más sencilla de obtener datos de una API es con <code>fetch</code>, que incluye el método <code>.json()</code> para parsear las respuestas JSON en un objeto literal o arreglo JavaScript que pueda utilizarse de forma automática.</p><p>Este es un código que utiliza <code>fetch</code> para hacer una petición <code>GET</code> de un chiste con temática de desarrollo de la API gratuita <a href="https://api.chucknorris.io/">Chuck Norris Jokes</a>:</p><pre><code class="language-js">fetch('https://api.chucknorris.io/jokes/random?category=dev')
  .then(res =&gt; res.json()) // el método .json() analiza la respuesta JSON en un objeto literal JS
  .then(data =&gt; console.log(data));
</code></pre><p>Si ejecutas ese código en el navegador, verás algo así en la consola:</p><pre><code class="language-js">{
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
}
</code></pre><p>Aunque parece un objeto JSON, en realidad es un objeto literal de JavaScript, y puedes usarlo libremente en tu aplicación.</p><h3 id="c-mo-encadenar-json-con-json-stringify-">Cómo encadenar JSON con<strong> <code>JSON.stringify()</code></strong></h3><p>¿Pero qué pasa si quieres enviar datos a una API?</p><p>Por ejemplo, digamos que quieres enviar un chiste de Chuck Norris a la API de Chistes de Chuck Norris para que otras personas puedan leerlo después.</p><p>En primer lugar, escribirías tu broma como un objeto literal de JS:</p><pre><code class="language-js">const nuevoChiste = {
  categories: ['dev'],
  value: "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."
};
</code></pre><p>Entonces, como estás enviando datos a una API, tendrías que convertir tu objeto literal nuevoChiste en una cadena JSON.</p><p>Afortunadamente, JavaScript incluye un método superútil para hacer precisamente eso: <code>JSON.stringify()</code>:</p><pre><code class="language-js">const nuevoChiste = {
  categories: ['dev'],
  value: "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."
};

console.log(JSON.stringify(nuevoChiste)); // {"categories":["dev"],"value":"Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."}

console.log(typeof JSON.stringify(nuevoChiste)); // string
</code></pre><p>Aunque en este ejemplo estamos convirtiendo un objeto literal en una cadena JSON, <code>JSON.stringify()</code> también funciona con arreglos.</p><p>Por último, sólo tendría que enviar su chiste JSON a la API con una petición POST. <code>POST</code>.</p><p>Tenga en cuenta que la API de Chuck Norris Jokes no tiene esta función. Pero si la tuviera, este es el aspecto que tendría el código:</p><pre><code class="language-js">const nuevoChiste = {
  categories: ['dev'],
  value: "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."
};

fetch('https://api.chucknorris.io/jokes/submit', { // endpoint falso - API
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(nuevoChiste), // convertir el objeto literal JS en una cadena JSON
})
  .then(res =&gt; res.json())
  .then(data =&gt; console.log(data))
  .catch(err =&gt; {
    console.error(err);
  });</code></pre><p>Y así, has analizado el JSON entrante con <code>fetch</code> y has utilizado <code>JSON.stringify()</code> para convertir un objeto literal JS en una cadena JSON.</p><h3 id="c-mo-trabajar-con-archivos-json-locales-en-el-navegador">Cómo trabajar con archivos JSON locales en el navegador</h3><p>Lamentablemente, no es posible (ni recomendable) cargar un archivo JSON local en el navegador.</p><p><code>fetch</code> arrojará un error si intentas cargar un archivo local. Por ejemplo, digamos que tienes un archivo JSON con algunos chistes:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">[
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
  },
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "ae-78cogr-cb6x9hluwqtw",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/ae-78cogr-cb6x9hluwqtw",
    "value": "There is no Esc key on Chuck Norris' keyboard, because no one escapes Chuck Norris."
  }
]
</code></pre><figcaption>chistes.json</figcaption></figure><p>Y quieres analizarlo y crear una lista de chistes en una página HTML sencilla.</p><p>Si creas una página con lo siguiente y la abres en tu navegador:</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /&gt;
    &lt;meta name="viewport" content="width=device-width" /&gt;
    &lt;title&gt;Obtener JSON local&lt;/title&gt;
  &lt;/head&gt;
  &lt;script&gt;
    fetch("./chistes.json", { mode: "no-cors" }) // desactivar CORS porque la ruta no contiene http(s)
      .then((res) =&gt; res.json())
      .then((data) =&gt; console.log(data));
  &lt;/script&gt;
&lt;/html&gt;
</code></pre><figcaption>index.html</figcaption></figure><p>Verás esto en la consola:</p><pre><code>Fetch API cannot load file://&lt;path&gt;/chistes.json. URL scheme "file" is not supported
</code></pre><p>Por defecto, los navegadores no permiten el acceso a los archivos locales por razones de seguridad. Esto es algo bueno, y no deberías hacer nada para evitar este comportamiento.</p><p>En su lugar, lo mejor es convertir el archivo JSON local en JavaScript. Afortunadamente, esto es bastante fácil, ya que la sintaxis de JSON es muy similar a la de JavaScript.</p><p>Todo lo que necesitas hacer es crear un nuevo archivo y declarar tu JSON como una variable:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">const chistes = [
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
  },
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "ae-78cogr-cb6x9hluwqtw",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/ae-78cogr-cb6x9hluwqtw",
    "value": "There is no Esc key on Chuck Norris' keyboard, because no one escapes Chuck Norris."
  }
]
</code></pre><figcaption>chistes.js</figcaption></figure><p>Y añádelo a tu página como un script por separado:</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /&gt;
    &lt;meta name="viewport" content="width=device-width" /&gt;
    &lt;title&gt;Obtener JSON local&lt;/title&gt;
  &lt;/head&gt;
  &lt;script src="chistes.js"&gt;&lt;/script&gt;
  &lt;script&gt;
    console.log(chistes);
  &lt;/script&gt;
&lt;/html&gt;
</code></pre><p>Podrás utilizar el arreglo de <code>chistes</code> libremente en tu código.</p><p>También podrías usar <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Modules"><code>modulos</code></a> de JavaScript para hacer lo mismo, pero eso está un poco fuera del alcance de este artículo.</p><p>¿Pero qué pasa si quieres trabajar con archivos JSON locales y tienes Node.js instalado? Echemos un vistazo a como hacerlo ahora.</p><h2 id="c-mo-analizar-json-en-node-js">Cómo analizar JSON en Node.js</h2><p>Node.js es un runtime de JavaScript que permite ejecutar JavaScript fuera del navegador. Puedes leer todo sobre <a href="https://www.freecodecamp.org/news/the-definitive-node-js-handbook-6912378afc6e/">Node.js aquí</a>.</p><p>Tanto si usas Node.js para ejecutar código localmente en tu ordenador, como si quieres ejecutar aplicaciones web completas en un servidor, es bueno saber cómo trabajar con JSON.</p><p>Para los siguientes ejemplos, utilizaremos el mismo archivo <code>chistes.json</code>:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">[
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
  },
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "ae-78cogr-cb6x9hluwqtw",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/ae-78cogr-cb6x9hluwqtw",
    "value": "There is no Esc key on Chuck Norris' keyboard, because no one escapes Chuck Norris."
  }
]
</code></pre><figcaption>chistes.json</figcaption></figure><h3 id="c-mo-analizar-un-archivo-json-con-require-">Cómo analizar un archivo JSON con<strong> <code>require()</code></strong></h3><p>Empecemos con el método más sencillo.</p><p>Si tienes un archivo JSON local, todo lo que necesitas hacer es usar <code>require()</code> para cargarlo como cualquier otro módulo de Node.js:</p><pre><code class="language-js">const chistes = require('./chistes.json');
</code></pre><p>El archivo JSON será analizado por ti automáticamente y podrás empezar a utilizarlo en tu proyecto:</p><pre><code class="language-js">const chistes = require('./chistes.json');

console.log(chistes[0].value); // "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
</code></pre><p>Ten en cuenta que esto es síncrono, lo que significa que su programa se detendrá hasta que analice todo el archivo antes de continuar. Los archivos JSON muy grandes pueden hacer que tu programa se ralentice, así que ten cuidado con eso.</p><p>Además, debido a que el análisis de JSON de esta manera carga todo en la memoria, es mejor utilizar este método para los archivos JSON estáticos. Si el archivo JSON cambia mientras tu programa está ejecutándose, no tendrás acceso a esos cambios hasta que reinicies tu programa y analices el archivo JSON actualizado.</p><h3 id="c-mo-analizar-un-archivo-json-con-fs-readfilesync-y-json-parse-">Cómo analizar un archivo JSON con<strong> <code>fs.readFileSync(</code>) y <code>JSON.parse()</code></strong></h3><p>Esta es la forma más tradicional (a falta de un término mejor) de analizar archivos JSON en proyectos Node.js – leer el archivo con el módulo <code>fs</code> (file system), y luego analizarlo con <code>JSON.parse()</code>.</p><p>Veamos cómo hacer esto con el método <code>fs.readFileSync()</code>. Primero, añade el módulo <code>fs</code> a tu proyecto:</p><pre><code class="language-js">const fs = require('fs');
</code></pre><p>Luego, crea una nueva variable para almacenar la salida del archivo <code>chistes.json</code> y establécela igual a <code>fs.readFileSync()</code>:</p><pre><code class="language-js">const fs = require('fs');
const archivoChistes = fs.readFileSync();
</code></pre><p><code>fs.readFileSync()</code> toma un par de argumentos. El primero es la ruta del archivo que quieres leer:</p><pre><code class="language-js">const fs = require('fs');
const archivoChistes = fs.readFileSync('./chistes.json');
</code></pre><p>Pero si ahora registras <code>archivoChistese</code> en la consola, verías algo como esto:</p><pre><code>&lt;Buffer 5b 0a 20 20 7b 0a 20 20 20 20 22 63 61 74 65 67 6f 72 69 65 73 22 3a 20 5b 22 64 65 76 22 5d 2c 0a 20 20 20 20 22 63 72 65 61 74 65 64 5f 61 74 22 3a ... 788 more bytes&gt;</code></pre><p>Eso sólo significa que el módulo <code>fs</code> está leyendo el archivo, pero no sabe la codificación o el formato del archivo. <code>fs</code> se puede utilizar para cargar casi cualquier archivo, y no sólo los basados en texto como JSON, por lo que tenemos que decirle cómo está codificado el archivo.</p><p>Para los archivos basados en texto, la codificación suele ser <code>utf8</code>:</p><pre><code class="language-js">const fs = require('fs');
const archivoChistes = fs.readFileSync('./chistes.json', 'utf8');
</code></pre><p>Ahora bien, si se registra <code>archivoChistes</code> en la consola, se verá el contenido del archivo.</p><p>Pero hasta ahora sólo estamos leyendo el archivo, y sigue siendo una cadena. Necesitaremos utilizar otro método para convertir <code>archivoChistes</code> en un objeto o arreglo JavaScript utilizable.</p><p>Para ello, utilizaremos <code>JSON.parse()</code>:</p><pre><code class="language-js">const fs = require('fs');
const archivoChistes = fs.readFileSync('./chistes.json', 'utf8');
const chistes = JSON.parse(archivoChistes);

console.log(chistes[0].value); // "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
</code></pre><p>Como su nombre indica, &nbsp;<code>JSON.parse()</code> toma una cadena JSON y la convierte en un objeto literal o arreglo de JavaScript.</p><p>Al igual que con el método anterior <code>require</code>, <code>fs.readFileSync()</code> es un método síncrono, lo que significa que podría hacer que su programa se ralentice si está leyendo un archivo grande, JSON o de otro tipo</p><p>Además, sólo lee el archivo una vez y lo carga en la memoria. Si el archivo cambia, tendrá que leerlo de nuevo en algún momento. Para hacer las cosas más fáciles, es posible que desee crear una función simple para leer los archivos.</p><p>Así es cómo podría verse:</p><pre><code class="language-js">const fs = require('fs');
const leerArchivo = path =&gt; fs.readFileSync(path, 'utf8');

const archivoChistes1 = leerArchivo('./chistes.json');
const chistes1 = JSON.parse(archivoChistes1);

console.log(chistes1[0].value); // "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."

// el archivo chistes.json cambia en algún momento

const archivoChistes2 = leerArchivo('./chistes.json');
const chistes2 = JSON.parse(archivoChistes2);

console.log(chistes2[0].value); // "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."</code></pre><h3 id="c-mo-analizar-json-con-fs-readfile-y-json-parse-">Cómo analizar JSON con<strong> <code>fs.readFile(</code>) y <code>JSON.parse()</code></strong></h3><p>El método <code>fs.readFile()</code> es muy similar a <code>fs.readFileSync()</code>, excepto que funciona de forma asíncrona. Esto es genial si tienes un archivo grande que leer y no quieres que retenga el resto de tu código.</p><p>Este es un ejemplo básico:</p><pre><code class="language-js">const fs = require('fs');

fs.readFile('./chistes.json', 'utf8');</code></pre><p>Hasta ahora esto se parece a lo que hicimos con <code>fs.readFileSync()</code>, excepto que no lo estamos asignando a una variable como <code>archivoChistes</code>. Como es asíncrono, cualquier código posterior a <code>fs.readFile()</code> se ejecutará antes de que termine de leer el archivo.</p><p>En su lugar, usaremos una función calback y analizaremos el JSON dentro de ella:</p><pre><code class="language-js">const fs = require('fs');

fs.readFile('./chistes.json', 'utf8', (err, data) =&gt; {
  if (err) console.error(err);
  const chistes = JSON.parse(data);

  console.log(chistes[0].value);
});

console.log("Esto se ejecutará primero");</code></pre><p>Que imprime lo siguiente en la consola:</p><pre><code>Esto se ejecutará primero
Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris.
</code></pre><p>Al igual que con <code>fs.readFileSync()</code>, <code>fs.readFile()</code> carga el archivo en la memoria, lo que significa que tendrá que leer el archivo de nuevo si cambia.</p><p>Además, aunque <code>fs.readFile()</code> es asíncrona, al final carga todo el archivo que está leyendo en la memoria. Si tienes un archivo masivo, puede ser mejor buscar en <a href="https://www.freecodecamp.org/news/node-js-streams-everything-you-need-to-know-c9141306be93/">Node.js streams</a> en su lugar.</p><h3 id="c-mo-encadenar-json-con-json-stringify-en-node-js">Cómo encadenar JSON con<strong> <code>JSON.stringify()</code> en Node.js</strong></h3><p>Por último, si estás analizando JSON con Node.js, es muy probable que necesites retornar JSON en algún momento, tal vez como una respuesta de la API.</p><p>Por suerte, esto funciona de la misma manera que en el navegador - sólo tienes que utilizar <code>JSON.stringify()</code> para convertir los objetos literales de JavaScript o arreglos en una cadena JSON:</p><pre><code class="language-js">const nuevoChiste = {
  categories: ['dev'],
  value: "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."
};

console.log(JSON.stringify(nuevoChiste)); // {"categories":["dev"],"value":"Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."}
</code></pre><p>Y eso es todo. Hemos cubierto casi todo lo que necesitas saber sobre cómo trabajar con JSON en el navegador y en los proyectos de Node.js.</p><p>Ahora sal a la pista y analiza o encadena los JSON a tu gusto.</p><p>¿Se me ha olvidado algo? ¿Cómo analizas JSON en tus proyectos? Hacemelo saber atravez de <a href="https://twitter.com/kriskoishigawa">Twitter</a>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ forEach en JavaScript: Cómo recorrer un arreglo en JS ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por: Cem Eygi [https://www.freecodecamp.org/news/author/cemeygi/] Artículo original: JavaScript forEach – How to Loop Through an Array in JS [https://www.freecodecamp.org/news/javascript-foreach-how-to-loop-through-an-array-in-js/] Traducido y adaptado por: Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] El método forEach de JavaScript es una de las varias formas de recorrer un arreglo. Cada método tiene diferentes características, y ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/foreach-en-javascript-como-recorrer-un-arreglo-en-js/</link>
                <guid isPermaLink="false">62113c4bac7bdf0914b1f67b</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Tue, 22 Feb 2022 02:44:42 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/5f9c99d8740569d1a4ca2204-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original escrito por</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/cemeygi/">Cem Eygi</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/javascript-foreach-how-to-loop-through-an-array-in-js/">JavaScript forEach – How to Loop Through an Array in JS</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Traducido y adaptado por</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong> </strong><a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p>El método forEach de JavaScript es una de las varias formas de recorrer un arreglo. Cada método tiene diferentes características, y depende de ti, dependiendo de lo que estés haciendo, decidir cuál usar.</p><p>En este post, vamos a echar un vistazo más de cerca al método forEach de JavaScript.</p><p>Teniendo en cuenta que tenemos el siguiente arreglo a continuación:</p><pre><code class="language-javascript">const numeros = [1, 2, 3, 4, 5];</code></pre><p>Utilizando el tradicional "bucle for" para recorrer el arreglo sería así:</p><pre><code class="language-javascript">for (i = 0; i &lt; numeros.length; i++) {
  console.log(numeros[i]);
} </code></pre><h2 id="-qu-hace-diferente-al-m-todo-foreach-">¿Qué hace diferente al método forEach( )?</h2><p>El método forEach también se utiliza para recorrer un arreglo, pero utiliza una función diferente a la del clásico "bucle for".</p><p>El método forEach pasa una función callback para cada elemento del arreglo junto con los siguientes parámetros:</p><ul><li>Valor actual (requerido) - El valor del elemento actual del arreglo</li><li>Index (opcional) - El número de índice del elemento actual</li><li>Arreglo (opcional) - El objeto del arreglo al que pertenece el elemento actual</li></ul><p>Permítame explicar estos parámetros paso a paso.</p><p>En primer lugar, para recorrer un arreglo utilizando el método forEach, se necesita una función callback (o función anónima):</p><pre><code class="language-javascript">numeros.forEach(function() {
    // código
});</code></pre><p>La función se ejecutará para cada elemento del arreglo. Debe tomar al menos un parámetro que represente los elementos del arreglo:</p><pre><code class="language-javascript">numeros.forEach(function(numero) {
    console.log(numero);
});</code></pre><p>Eso es todo lo que tenemos que hacer para recorrer el arreglo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/06/Ads-z-2.png" class="kg-image" alt="Ads-z-2" width="600" height="400" loading="lazy"></figure><p>Como alternativa, puede utilizar la representación de la función de flecha de ES6 para simplificar el código:</p><figure class="kg-card kg-code-card"><pre><code class="language-javascript">numeros.forEach(numero =&gt; console.log(numero));</code></pre><figcaption>Representación de la función flecha</figcaption></figure><h2 id="par-metros-opcionales">Parámetros opcionales</h2><h3 id="index">Index</h3><p>Bien, ahora continuemos con los parámetros opcionales. El primero es el parámetro "index", que representa el número de índice de cada elemento.</p><p>Básicamente, podemos ver el número de índice de un elemento si lo incluimos como segundo parámetro:</p><pre><code class="language-javascript">numeros.forEach((numero, index) =&gt; {
    console.log('Indice: ' + index + ' Valor: ' + numero);
});</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-31.png" class="kg-image" alt="image-31" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/image-31.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-31.png 664w" width="664" height="253" loading="lazy"></figure><h3 id="arreglo"><strong>Arreglo</strong></h3><p>El parámetro del arreglo es el propio arreglo. También es opcional y se puede utilizar si es necesario en varias operaciones. En caso contrario, si lo llamamos, simplemente se imprimirá tantas veces como el número de elementos del arreglo:</p><pre><code class="language-javascript">numeros.forEach((numero, index, arreglo) =&gt; {
    console.log(arreglo);
});</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/07/Ads-z.png" class="kg-image" alt="Ads-z" width="600" height="400" loading="lazy"></figure><p>Puedes ver el ejemplo de uso del método forEach( ) en este vídeo:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.25%;" class="fluid-width-video-wrapper">
            <iframe src="https://www.youtube.com/embed/E2GawbHDFfs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="Embedded content" loading="lazy" name="fitvid0" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; position: absolute; top: 0px; left: 0px; width: 720px; height: 405px;"></iframe>
          </div>
        </div>
      </figure><h2 id="soporte-para-navegadores">Soporte para navegadores</h2><p>El método Array.forEach es <a href="https://caniuse.com/#search=Array.foreach">compatible </a>con todos los navegadores, excepto con la versión 8 o anterior de IE:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/06/Ads-z.png" class="kg-image" alt="Ads-z" width="600" height="400" loading="lazy"><figcaption><a href="https://caniuse.com/" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">caniuse.com</a></figcaption></figure><p><strong>Si quieres aprender más sobre desarrollo web, no dudes en visitar el <a href="https://www.youtube.com/channel/UC1EgYPCvKCXFn8HlpoJwY3Q?view_as=subscriber">canal de Youtube</a> del autor original de este artículo.</strong></p><p>Gracias por leer.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Funciones callback en JavaScript: Qué son los callbacks en JS y cómo usarlos ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por: Cem Eygi [https://www.freecodecamp.org/news/author/cemeygi/] Artículo original: JavaScript Callback Functions – What are Callbacks in JS and How to Use Them [https://www.freecodecamp.org/news/javascript-callback-functions-what-are-callbacks-in-js-and-how-to-use-them/] Traducido y adaptado por: Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] Si estás familiarizado con la programación, ya sabes lo que hacen las funciones y cómo utilizarlas. Pero, ¿qué es  ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/funciones-callback-en-javascript-que-son-los-callback-en-js-y-como-usarlos/</link>
                <guid isPermaLink="false">62113079ac7bdf0914b1f5f6</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Tue, 22 Feb 2022 02:23:07 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/caspar-camille-rubin-7SDoly3FV_0-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong>Artículo original escrito por</strong>: </strong><a href="https://www.freecodecamp.org/news/author/cemeygi/">Cem Eygi</a><br><strong><strong>Artículo original</strong>:<strong> </strong></strong><a href="https://www.freecodecamp.org/news/javascript-callback-functions-what-are-callbacks-in-js-and-how-to-use-them/">JavaScript Callback Functions – What are Callbacks in JS and How to Use Them</a><br><strong><strong>Traducido y adaptado por</strong>: </strong><a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p>Si estás familiarizado con la programación, ya sabes lo que hacen las funciones y cómo utilizarlas. Pero, ¿qué es una función callback? Las funciones callback son una parte importante de JavaScript y una vez que entiendas cómo funcionan los callbacks, mejorarás mucho en JavaScript.</p><p>Así que en este post, me gustaría ayudarte a entender lo que son las funciones callback y cómo usarlas en JavaScript a través de algunos ejemplos.</p><h2 id="-qu-es-una-funci-n-callback">¿Qué es una función callback?</h2><p>En JavaScript, las funciones son objetos. ¿Podemos pasar objetos a las funciones como parámetros? Sí.</p><p>Así, también podemos pasar funciones como parámetros a otras funciones y llamarlas dentro de las funciones externas. ¿Suena complicado? Permítanme mostrarlo en un ejemplo a continuación:</p><pre><code class="language-javascript">function imprimir(callback) {  
    callback();
}</code></pre><p>La función imprimir( ) toma otra función como parámetro y la llama en su interior. Esto es válido en JavaScript y lo llamamos "callback". Así que una función que se pasa a otra función como parámetro es una función callback. Pero eso no es todo.</p><p><strong>También puede ver la versión en vídeo de las funciones callback a continuación:</strong></p><!--kg-card-begin: html--><small style="background-color: orange; color: black; text-align: center;">video en inglés</small><!--kg-card-end: html--><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.25%;" class="fluid-width-video-wrapper">
            <iframe src="https://www.youtube.com/embed/qtfi4-8dj9c?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="Embedded content" loading="lazy" name="fitvid0" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; position: absolute; top: 0px; left: 0px; width: 720px; height: 405px;"></iframe>
          </div>
        </div>
      </figure><h3 id="-por-qu-necesitamos-funciones-callback">¿Por qué necesitamos funciones callback?</h3><p>JavaScript ejecuta el código secuencialmente en orden descendente. Sin embargo, hay algunos casos en los que el código se ejecuta (o debe ejecutarse) después de que ocurra otra cosa y también de forma no secuencial. Esto se llama programación asíncrona.</p><p>Los callbacks aseguran que una función no se va a ejecutar antes de que se complete una tarea, sino que se ejecutará justo después de que la tarea se haya completado. Nos ayuda a desarrollar código JavaScript asíncrono y nos mantiene a salvo de problemas y errores.</p><p>En JavaScript, la forma de crear una función callback es pasándola como parámetro a otra función, y luego llamarla de vuelta justo después de que haya ocurrido algo o se haya completado alguna tarea. Veamos cómo...</p><h2 id="c-mo-crear-un-callback">Cómo crear un callback</h2><p>Para entender lo que he explicado arriba, déjame empezar con un ejemplo sencillo. Queremos registrar un mensaje en la consola, pero debe aparecer después de 3 segundos.</p><pre><code class="language-javascript">const mensaje = function() {  
    console.log("Este mensaje se muestra después de 3 segundos");
}
 
setTimeout(mensaje, 3000);</code></pre><p>Hay un método incorporado en JavaScript llamado "setTimeout", que llama a una función o evalúa una expresión después de un período de tiempo determinado (en milisegundos). Así que aquí, la función "mensaje" está siendo llamada después de que hayan pasado 3 segundos. (1 segundo = 1000 milisegundos)</p><p>En otras palabras, la función de mensaje está siendo llamada después de que algo sucedió (después de que pasaron 3 segundos para este ejemplo), pero no antes. Así que la función de mensaje es un ejemplo de una función callback.</p><h3 id="-qu-es-una-funci-n-an-nima">¿Qué es una función anónima?</h3><p>También podemos definir una función directamente dentro de otra función, en lugar de llamarla. Se verá así:</p><pre><code class="language-javascript">setTimeout(function() {  
    console.log("Este mensaje se muestra después de 3 segundos");
}, 3000);</code></pre><p>Como podemos ver, la función callback aquí no tiene nombre y una definición de función sin nombre en JavaScript se llama "función anónima". Esto hace exactamente la misma tarea que el ejemplo anterior.</p><h3 id="callback-en-forma-de-funci-n-de-flecha">Callback en forma de función de flecha</h3><p>Si lo prefiere, también puede escribir la misma función callback como una función de flecha ES6, que es un tipo de función más reciente en JavaScript:</p><pre><code class="language-javascript">setTimeout(() =&gt; { 
    console.log("Este mensaje se muestra después de 3 segundos");
}, 3000);</code></pre><h2 id="-qu-pasa-con-los-eventos">¿Qué pasa con los eventos?</h2><p>JavaScript es un lenguaje de programación basado en eventos. También utilizamos funciones callbacks para las declaraciones de eventos. Por ejemplo, digamos que queremos que los usuarios hagan clic en un botón:</p><pre><code class="language-html">&lt;button id="callback-btn"&gt;Haga clic aquí&lt;/button&gt;</code></pre><p>Esta vez veremos un mensaje en la consola solo cuando el usuario haga clic en el botón:</p><pre><code class="language-javascript">document.queryselector("#callback-btn")
    .addEventListener("click", function() {    
      console.log("El usuario ha hecho clic en el botón.");
});</code></pre><p>Así que aquí seleccionamos el botón primero con su id, y luego añadimos un receptor de eventos con el método addEventListener. Toma 2 parámetros. El primero es su tipo, "click", y el segundo parámetro es una función callback, que registra el mensaje cuando el botón es pulsado.</p><p>Como puedes ver, las funciones callback también se utilizan para las declaraciones de eventos en JavaScript.</p><h2 id="conclusi-n">Conclusión</h2><p>Los callbacks se utilizan a menudo en JavaScript, y espero que este post te ayude a entender lo que realmente hacen y cómo trabajar con ellos más fácilmente. A continuación, puedes aprender sobre <a href="https://www.freecodecamp.org/news/javascript-es6-promises-for-beginners-resolve-reject-and-chaining-explained/">promesas en JavaScript</a> que es un tema similar que he explicado en mi nuevo post.</p><p><strong>Si quieres aprender más sobre desarrollo web, ¡no dudes en <a href="https://www.youtube.com/channel/UC1EgYPCvKCXFn8HlpoJwY3Q">seguirme en Youtube</a>!</strong></p><p>Gracias por leer.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo utilizar imágenes SVG en CSS y HTML: Un tutorial para principiantes ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por: Edidiong Asikpo [https://www.freecodecamp.org/news/author/edidiong/] Artículo original: How to Use SVG Images in CSS and HTML – A Tutorial for Beginners [https://www.freecodecamp.org/news/use-svg-images-in-css-html/] Traducido y adaptado por: Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] SVG son las siglas de gráficos vectoriales escalables (Scalable Vector Graphics). Es un tipo único de formato de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-utilizar-imagenes-svg-en-css-y-html-un-tutorial-para-principiantes/</link>
                <guid isPermaLink="false">62110f9cac7bdf0914b1f4cc</guid>
                
                    <category>
                        <![CDATA[ SVG ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Tue, 22 Feb 2022 02:01:42 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/post.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong>Artículo original escrito por: </strong><a href="https://www.freecodecamp.org/news/author/edidiong/">Edidiong Asikpo</a><strong><br>Artículo original: </strong><a href="https://www.freecodecamp.org/news/use-svg-images-in-css-html/">How to Use SVG Images in CSS and HTML – A Tutorial for Beginners</a><strong><br>Traducido y adaptado por: </strong><a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p>SVG son las siglas de gráficos vectoriales escalables (Scalable Vector Graphics). Es un tipo único de formato de imágenes para gráficos basados en vectores escrito en el lenguaje de marcado extensible (XML).</p><p>En este tutorial, explicaré por qué querrías usar imágenes SVG y cómo puedes usarlas en CSS y HTML.</p><h1 id="-por-qu-utilizar-im-genes-svg"><strong>¿</strong>Por qué utilizar imágenes SVG?</h1><p>Hay varias razones para utilizar imágenes SVG, algunas de las cuales son:</p><ul><li>Las imágenes SVG no pierden su calidad al ampliarlas o cambiarlas de tamaño.</li><li>Se pueden crear y editar con un IDE o un editor de texto.</li><li>Son accesibles y animables.</li><li>Tienen un tamaño de archivo pequeño y son altamente escalables.</li><li>Y se pueden buscar, indexar, programar y comprimir.</li></ul><p>Ahora vamos a ver cómo se puede trabajar realmente con las imágenes SVG.</p><h1 id="c-mo-descargar-la-imagen-svg-utilizada-en-este-tutorial">Cómo descargar la imagen SVG utilizada en este tutorial</h1><p>Si quieres trabajar con la imagen SVG que he utilizado en este tutorial, sigue los pasos (y el esquema) de abajo para descargarla.</p><ul><li>Ve a <a href="https://undraw.co/search">unDraw</a>.</li><li>Cambia el color de fondo a amarillo.</li><li>En el cuadro de búsqueda, busca la palabra <strong>happy</strong>.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/tutorial-1.png" class="kg-image" alt="unDraw's Homepage" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/tutorial-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/02/tutorial-1.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2022/02/tutorial-1.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/tutorial-1.png 1836w" sizes="(min-width: 720px) 720px" width="1836" height="888" loading="lazy"></figure><ul><li>Haz clic en la imagen llamada "<strong>Happy news</strong>".</li><li>En la ventana emergente, has clic en el botón "Download SVG for your projects".</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/tutorial-2.png" class="kg-image" alt="Download the SVG file" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/tutorial-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/02/tutorial-2.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/tutorial-2.png 1336w" sizes="(min-width: 720px) 720px" width="1336" height="581" loading="lazy"></figure><p>Si seguiste los pasos anteriores correctamente, la imagen SVG debe estar ahora en tu ordenador.<br></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/3uCGy6B.png" class="kg-image" alt="3uCGy6B" width="1003" height="183" loading="lazy"></figure><p>Ahora, abre la imagen SVG en tu IDE o editor de texto favorito. Cámbiale el nombre a <strong>happy.svg</strong> o el que prefieras.</p><h1 id="c-mo-utilizar-im-genes-svg-en-css-y-html">Cómo utilizar imágenes SVG en CSS y HTML</h1><p>Hay varias maneras diferentes de utilizar imágenes SVG en CSS y HTML. En este tutorial exploraremos seis métodos diferentes.</p><h2 id="1-c-mo-utilizar-un-svg-con-img"><strong><strong>1. </strong></strong>Cómo utilizar un SVG con<strong><strong> <code>&lt;img&gt;</code></strong></strong></h2><p>Este método es la forma más sencilla de añadir imágenes SVG a una página web. Para utilizar este método, añade el elemento <code>&lt;img&gt;</code> a tu documento HTML y haz referencia a él en el atributo <code>src</code>, así:</p><pre><code class="language-html">&lt;img src = "happy.svg" alt="Mi SVG feliz"/&gt;
</code></pre><p>Suponiendo que hayas descargado la imagen SVG de <a href="https://undraw.co/illustrations">unDraw </a>y la hayas renombrado como <strong>happy.svg</strong>, puedes seguir adelante y añadir el fragmento de código anterior en tu documento HTML.</p><p>Si lo has hecho todo correctamente, tu página web debe tener el mismo aspecto que la siguiente demostración. ?</p><figure class="kg-card kg-embed-card"><iframe width="1280" height="500" src="https://codesandbox.io/embed/svg-demo-mppxs?from-embed" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; width: 1280px; height: 500px; border-radius: 4px; overflow: hidden;"></iframe></figure><p>Cuando se añade una imagen SVG mediante la etiqueta <code>&lt;img&gt;</code> sin especificar el tamaño, se asume el tamaño del archivo SVG original.</p><p>Por ejemplo, en la demostración anterior, no modifiqué el tamaño de la imagen SVG, por lo que asumió su tamaño original (que era un ancho de <code>915.11162px</code> y una altura de <code>600.53015px</code>).</p><p><strong>Nota</strong>: para cambiar el tamaño original, tienes que especificar el <code>width</code> y <code>height</code> con CSS como puedes ver en la demo de abajo. También puede actualizar el <code>width</code> y <code>height</code> originales directamente.</p><figure class="kg-card kg-embed-card"><iframe width="1280" height="500" src="https://codesandbox.io/embed/svg-demo-1-ey5me?from-embed" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; width: 1280px; height: 500px; border-radius: 4px; overflow: hidden;"></iframe></figure><p>Aunque podemos cambiar el tamaño de las imágenes SVG añadidas a través de la etiqueta <code>&lt;img&gt;</code> siguen existiendo algunas restricciones si quieres hacer cambios de estilo importantes en la imagen SVG.</p><h2 id="2-c-mo-utilizar-svg-con-background-image-en-css"><strong><strong>2. </strong></strong>Cómo utilizar SVG con<strong><strong> <code>background-image</code></strong> en CSS</strong></h2><p>Esto es similar a añadir SVG a un documento HTML utilizando la etiqueta <code>&lt;img&gt;</code>. Pero esta vez lo hacemos con CSS en lugar de HTML, como puedes ver en el siguiente fragmento de código.</p><pre><code class="language-css">body {
  background-image: url(happy.svg);
}
</code></pre><p>Cuando se utiliza un SVG como imagen de fondo con CSS, tiene limitaciones similares a las de utilizar <code>&lt;img&gt;</code>. Aun así, permite un poco más de personalización.</p><p>Echa un vistazo a la demostración que aparece a continuación y siéntete libre de hacer modificaciones en ella utilizando CSS.</p><figure class="kg-card kg-embed-card"><iframe width="1280" height="500" src="https://codesandbox.io/embed/svg-demo-2-ftn6n?from-embed" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; width: 1280px; height: 500px; border-radius: 4px; overflow: hidden;"></iframe></figure><h2 id="3-c-mo-utilizar-im-genes-svg-inline"><strong><strong>3. </strong></strong>Cómo utilizar imágenes SVG inline</h2><p>Las imágenes SVG pueden escribirse directamente en el documento HTML mediante la etiqueta <code>&lt;svg&gt; &lt;/svg&gt;</code>.</p><p>Para ello, abre la imagen SVG en VS code o en tu IDE preferido, copia el código y pégualo dentro del elemento <code>&lt;body&gt;</code> en tu documento HTML.</p><pre><code class="language-htmlembedded">&lt;body&gt;
 // Pegua aquí el código SVG.
&lt;/body&gt;
</code></pre><p>Si lo has hecho todo correctamente, tu página web debe ser exactamente igual que la demostración de abajo.</p><figure class="kg-card kg-embed-card"><iframe width="1280" height="500" src="https://codesandbox.io/embed/svg-demo-3-zunkd?from-embed" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; width: 1280px; height: 500px; border-radius: 4px; overflow: hidden;"></iframe></figure><p>Cuando se utiliza el SVG inline en el documento HTML, se reduce el tiempo de carga porque sirve como una solicitud HTTP.</p><p>El uso de este método te permite realizar una mayor personalización en comparación con el uso de <code>&lt;img&gt;</code> o <code>background-image</code>.</p><h2 id="4-c-mo-utilizar-un-svg-con-object"><strong><strong>4. </strong></strong>Cómo utilizar un SVG con<strong><strong> <code>&lt;object&gt;</code></strong></strong></h2><p>También puedes utilizar un elemento HTML <code>&lt;object&gt;</code> para añadir imágenes SVG a una página web utilizando la siguiente sintaxis de código:</p><pre><code>&lt;object data="happy.svg" width="300" height="300"&gt; &lt;/object&gt;
</code></pre><p>El atributo <code>data</code> se utiliza para especificar la URL del recurso que utilizará el objeto, que en nuestro caso es la imagen SVG.</p><p>El <code>width</code> y el <code>height</code> se utilizan para especificar el tamaño de la imagen SVG.</p><p>De nuevo, a continuación se muestra una demostración para que la explore. ?</p><figure class="kg-card kg-embed-card"><iframe width="1280" height="500" src="https://codesandbox.io/embed/svg-demo-4-3ge0n?from-embed=&amp;file=/index.html" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; width: 1280px; height: 500px; border-radius: 4px; overflow: hidden;"></iframe></figure><p>El uso de <code>&lt;object&gt;</code> es compatible con todos los navegadores que soportan SVG.</p><h2 id="5-c-mo-utilizar-svg-con-iframe"><strong><strong>5. </strong></strong>Cómo utilizar SVG con<strong><strong> <code>&lt;iframe&gt;</code></strong></strong></h2><p>Aunque esto no es aconsejable, también puedes añadir una imagen SVG usando un <code>&lt;iframe&gt;</code> &nbsp;como se ve en la demostración de abajo.</p><figure class="kg-card kg-embed-card"><iframe width="1280" height="500" src="https://codesandbox.io/embed/svg-demo-5-co3hg?from-embed" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; width: 1280px; height: 500px; border-radius: 4px; overflow: hidden;"></iframe></figure><p>Sin embargo, tenga en cuenta que los <code>&lt;iframe&gt;</code> pueden ser difíciles de mantener y serán malos para la optimización de su sitio en los motores de búsqueda (SEO). </p><p>El uso de <code>&lt;iframe&gt;</code> también anula el propósito de e<em>scalables </em>en el nombre g<em>ráficos vectoriales escalables</em> porque las imágenes SVG añadidas con este formato no son escalables.</p><h2 id="6-c-mo-utilizar-svg-con-embed-"><strong><strong>6. </strong></strong>Cómo utilizar SVG con<strong><strong> <code>&lt;embed&gt;</code></strong>`</strong></h2><p>El elemento HTML <code>&lt;embed&gt;</code> es otra forma de utilizar una imagen SVG en HTML y CSS utilizando esta sintaxis: <code>&lt;embed src="happy.svg" /&gt;</code>.</p><p>Sin embargo, tenga en cuenta que este método también tiene limitaciones. Según <strong>MDN</strong>, la mayoría de los navegadores modernos han dejado de ser compatibles con los plug-ins del navegador. Esto significa que depender de <code>&lt;embed&gt;</code> no es generalmente buena idea si quieres que tu sitio sea operable en el navegador del usuario promedio.</p><p>A continuación se muestra una demostración del uso del elemento HTML &nbsp;<code>&lt;embed&gt;</code> para añadir una imagen SVG.</p><figure class="kg-card kg-embed-card"><iframe width="1280" height="500" src="https://codesandbox.io/embed/svg-demo-6-iwy0s?from-embed" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; width: 1280px; height: 500px; border-radius: 4px; overflow: hidden;"></iframe></figure><h2 id="conclusi-n"><strong><strong>Conclusi</strong>ó<strong>n</strong></strong></h2><p>Espero que hayas podido conocer las diferentes maneras de emplear imágenes SVG en CSS y HTML. Espero que esto te guíe hacia la elección del método correcto a la hora de añadir imágenes SVG a un sitio web.</p><p>Si tienes alguna pregunta, puedes enviarme un <a href="https://twitter.com/Didicodes">mensaje en Twitter</a> , y estaré encantada de responder a cada una de las preguntas.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ var, let y const: ¿Cuál es la diferencia? ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Sarah Chima Atuonwu [https://www.freecodecamp.org/news/author/sarah/] Artículo original Var, Let, and Const – What's the Difference? [https://www.freecodecamp.org/news/var-let-and-const-whats-the-difference/] Traducido y adaptado por Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] Con ES2015 (ES6) aparecieron muchas características nuevas y llamativas. Ahora, desde el año 2020, se supone que muchos desarrolladores de JavaScript se han ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/var-let-y-const-cual-es-la-diferencia/</link>
                <guid isPermaLink="false">61fc4b9ce56f6e08aa1c4697</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Thu, 10 Feb 2022 17:46:30 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/5f9c9bd4740569d1a4ca2e24-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong>Artículo original escrito por</strong> <a href="https://www.freecodecamp.org/news/author/sarah/">Sarah Chima Atuonwu</a><br><strong>Artículo original </strong><a href="https://www.freecodecamp.org/news/var-let-and-const-whats-the-difference/">Var, Let, and Const – What's the Difference?</a><br><strong>Traducido y adaptado por</strong> <a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p>Con ES2015 (ES6) aparecieron muchas características nuevas y llamativas. Ahora, desde el año 2020, se supone que muchos desarrolladores de JavaScript se han familiarizado con estas características y han empezado a utilizarlas.</p><p>Aunque esta suposición podría ser parcialmente cierta, todavía es posible que algunas de estas características sigan siendo un misterio para algunos desarrolladores.</p><p>Una de las características que llegaron con ES6 es la adición de <code>let</code> y <code>const</code>, que se pueden utilizar para la declaración de variables. La pregunta es, ¿qué las hace diferentes del viejo <code>var</code> que hemos venido utilizando? Si todavía no lo tienes claro, este artículo es para ti.</p><p>En este artículo, hablaremos de <code>var</code>, <code>let</code> y <code>const</code> &nbsp;con respecto a su ámbito (alcance), uso y hoisting. A medida que leas, toma nota de las diferencias entre ellos que señalaré.</p><h2 id="var"><strong>Var</strong></h2><p>Antes de la llegada de ES6, las declaraciones <code>var</code> eran las que mandaban. Sin embargo, hay problemas asociados a las variables declaradas con <code>var</code>. Por eso fue necesario que surgieran nuevas formas de declarar variables. En primer lugar, vamos a entender más sobre <code>var</code> antes de discutir esos problemas.</p><h3 id="-mbito-de-var">Ámbito<strong> de var</strong></h3><p>El<strong> </strong>ámbito, significa esencialmente dónde están disponibles estas variables para su uso. Las declaraciones <code>var</code> tienen un ámbito global o un ámbito de función/local.</p><p>El ámbito es global cuando una variable <code>var</code> se declara fuera de una función. Esto significa que cualquier variable que se declare con <code>var</code> fuera de una función está disponible para su uso en toda la pantalla.</p><p><code>var</code> tiene un ámbito local cuando se declara dentro de una función. Esto significa que está disponible y solo se puede acceder a ella dentro de esa función.</p><p>Para entenderlo mejor, mira el siguiente ejemplo.</p><pre><code class="language-javascript">    var saludar = "hey, hola";
    
    function nuevaFuncion() {
        var hola = "hola";
    }
</code></pre><p>Aquí, <code>saludar</code> tiene un ámbito global porque existe fuera de la función mientras que <code>hola</code> tiene un ámbito local. Así que no podemos acceder a la variable <code>hola</code> fuera de la función. Así que si realizamos esto:</p><pre><code class="language-javascript">    var tester = "hey, hola";
    
    function nuevaFuncion() {
        var hola = "hola";
    }
    console.log(hola); // error: hola is not defined
</code></pre><p>Obtendremos un error que se debe a que <code>hola</code> no está disponible fuera de la función.</p><h3 id="las-variables-con-var-se-pueden-volver-a-declarar-y-modificar">Las variables con var se pueden volver a declarar y modificar</h3><p>Esto significa que podemos hacer esto dentro del mismo ámbito y no obtendremos un error.</p><pre><code class="language-javascript">    var saludar = "hey, hola";
    var saludar = "dice Hola tambien";
</code></pre><p>y esto también</p><pre><code class="language-javascript">    var saludar = "hey, hola";
    saludar = "dice Hola tambien";
</code></pre><h3 id="hoisting-de-var"><strong>Hoisting de var</strong></h3><p>Hoisting es un mecanismo de JavaScript en el que las variables y declaraciones de funciones se mueven a la parte superior de su ámbito antes de la ejecución del código. Esto significa que si hacemos esto:</p><pre><code class="language-javascript">    console.log (saludar);
    var saludar = "dice hola"
</code></pre><p>se interpreta así:</p><pre><code class="language-javascript">    var saludar;
    console.log(saludar); // saludar is undefined
    saludar = "dice hola"
</code></pre><p>Entonces las variables con <code>var</code> se elevan a la parte superior de su ámbito y se inicializan con un valor de <code>undefined</code>.</p><h3 id="problema-con-var">Problema con var</h3><p>Hay una debilidad que viene con &nbsp;<code>var</code>. Usaré el ejemplo de abajo para explicarlo:</p><pre><code class="language-javascript">    var saludar = "hey, hola";
    var tiempos = 4;

    if (tiempos &gt; 3) {
        var saludar = "dice Hola tambien"; 
    }
    
    console.log(saludar) // "dice Hola tambien"
</code></pre><p>Por lo tanto, como <code>tiempos &gt; 3</code> devuelve true, <code>saludar</code> se redefine para <code>"dice Hola tambien"</code>. Aunque esto no es un problema si quieres redefinir <code>saludar</code> a conciencia, se convierte en un problema cuando no te das cuenta de que la variable <code>saludar</code> ha sido definida antes.</p><p>Si has utilizado <code>saludar</code> en otras partes de tu código, puede que te sorprenda la salida que puedes obtener. Esto probablemente causará muchos errores en tu código. Por eso son necesarios <code>let</code> y <code>const</code>.</p><h2 id="let"><strong>Let</strong></h2><p><code>let</code> es ahora preferible para la declaración de variables. No es una sorpresa, ya que es una mejora de las declaraciones con <code>var</code>. También resuelve el problema con <code>var</code> que acabamos de cubrir. Consideremos por qué esto es así.</p><h3 id="let-tiene-un-mbito-de-bloque"><strong>let tiene un </strong>ámbito<strong> de bloque</strong></h3><p>Un bloque es un trozo de código delimitado por {}. Un bloque vive entre llaves. Todo lo que está dentro de llaves es un bloque.</p><p>Así que una variable declarada en un bloque con <code>let</code> &nbsp;solo está disponible para su uso dentro de ese bloque. Permíteme explicar esto con un ejemplo:</p><pre><code class="language-javascript">   let saludar = "dice Hola";
   let tiempos = 4;

   if (tiempos &gt; 3) {
        let hola = "dice Hola tambien";
        console.log(hola);// "dice Hola tambien"
    }
   console.log(hola) // hola is not defined
</code></pre><p>Vemos que el uso de <code>hola</code> fuera de su bloque (las llaves donde se definió) devuelve un error. Esto se debe a que las variables <code>let</code> tienen un alcance de bloque.</p><h3 id="let-puede-modificarse-pero-no-volver-a-declararse-"><strong>let </strong>puede modificarse pero no volver a declararse.</h3><p>Al igual que <code>var</code>, &nbsp;una variable declarada con <code>let</code> puede ser actualizada dentro de su ámbito. A diferencia de <code>var</code>, una variable <code>let</code> no puede ser re-declarada dentro de su ámbito. Así que mientras esto funciona:</p><pre><code class="language-javascript">    let saludar = "dice Hola";
    saludar = "dice Hola tambien";
</code></pre><p>esto devolverá un error:</p><pre><code class="language-javascript">    let saludar = "dice Hola";
    let saludar = "dice Hola tambien"; // error: Identifier 'saludar' has already been declared
</code></pre><p>Sin embargo, si la misma variable se define en diferentes ámbitos, no habrá ningún error:</p><pre><code class="language-javascript">    let saludar = "dice Hola";
    if (true) {
        let saludar = "dice Hola tambien";
        console.log(saludar); // "dice Hola tambien"
    }
    console.log(saludar); // "dice Hola"
</code></pre><p>¿Por qué no hay ningún error? Esto se debe a que ambas instancias son tratadas como variables diferentes, ya que tienen ámbitos diferentes.</p><p>Este hecho hace que <code>let</code> sea una mejor opción que <code>var</code>. Cuando se utiliza <code>let</code>, no hay que preocuparse de sí se ha utilizado un nombre para una variable antes, puesto que una variable solo existe dentro de su ámbito.</p><p>Además, como una variable no puede ser declarada más de una vez dentro de un ámbito, entonces el problema discutido anteriormente que ocurre con <code>var</code> no sucede.</p><h3 id="hoisting-de-let"><strong>Hoisting de let</strong></h3><p>Al igual que &nbsp;<code>var</code>, las declaraciones <code>let</code> se elevan a la parte superior. A diferencia de <code>var</code> que se inicializa como <code>undefined</code>, la palabra clave <code>let</code> no se inicializa. Sí que si intentas usar una variable <code>let</code> antes de declararla, obtendrás un <code>Reference Error</code>.</p><h2 id="const"><strong>Const</strong></h2><p>Las variables declaradas con <code>const</code> mantienen valores constantes. Las declaraciones <code>const</code> similitudes con las declaraciones <code>let</code>.</p><h3 id="las-declaraciones-const-tienen-un-mbito-de-bloque"><strong>Las declaraciones const tienen un </strong>ámbito<strong> de bloque</strong></h3><p>Al igual que las declaraciones <code>let</code>, solamente se puede acceder a las declaraciones <code>const</code> dentro del bloque en el que fueron declaradas.</p><h3 id="const-no-puede-modificarse-ni-volver-a-declararse"><strong>const </strong>no puede modificarse ni volver a declararse</h3><p>Esto significa que el valor de una variable declarada con <code>const</code> s el mismo dentro de su ámbito. No se puede actualizar ni volver a declarar. Así que si declaramos una variable con <code>const</code>, no podemos hacer esto:</p><pre><code class="language-javascript">    const saludar = "dice Hola";
    saludar = "dice Hola tambien";// error: Assignment to constant variable. 
</code></pre><p>ni esto:</p><pre><code class="language-javascript">    const saludar = "dice Hola";
    const saludar = "dice Hola tambien";// error: Identifier 'saludar' has already been declared
</code></pre><p>Por lo tanto, toda declaración <code>const</code>, debe ser inicializada en el momento de la declaración.</p><p>Este comportamiento es algo diferente cuando se trata de objetos declarados con <code>const</code>. Mientras que un objeto <code>const</code> no se puede actualizar, las propiedades de este objeto sí se pueden actualizar. Como resultado, si declaramos un objeto <code>const</code> como este:</p><pre><code class="language-javascript">    const saludar = {
        mensaje: "dice Hola",
        tiempos: 4
    }
</code></pre><p>mientras que no podemos hacer esto:</p><pre><code class="language-javascript">    saludar = {
        palabras: "Hola",
        numero: "cinco"
    } // error:  Assignment to constant variable.
</code></pre><p>podemos hacer esto:</p><pre><code class="language-javascript">    saludar.mensaje = "dice Hola tambien";
</code></pre><p>Esto actualizará el valor de <code>saludar.mensaje</code> sin devolver errores.</p><h3 id="hoisting-de-const"><strong>Hoisting de const</strong></h3><p>Al igual que <code>let</code>, <code>const</code> las declaraciones <code>const</code> se elevan a la parte superior, pero no se inicializan.</p><p>En caso de que no hayas notado las diferencias, aquí están:</p><ul><li>Las declaraciones <code>var</code> tienen un ámbito global o un ámbito función/local, mientras que <code>let</code> y <code>const</code> tienen un ámbito de bloque.</li><li>Las variables <code>var</code> pueden ser modificadas y re-declaradas dentro de su ámbito; las variables <code>let</code> pueden ser modificadas, pero no re-declaradas; las variables <code>const</code> no pueden ser modificadas ni re-declaradas.</li><li>Todas ellas se elevan a la parte superior de su ámbito. Pero mientras que las variables <code>var</code> se inicializan con <code>undefined</code>, <code>let</code> y <code>const</code> no se inicializan.</li><li>Mientras que <code>var</code> y <code>let</code> pueden ser declaradas sin ser inicializadas, <code>const</code> debe ser inicializada durante la declaración.</li></ul><p>¿Tienes alguna pregunta o adición? Por favor, hágamelo saber.</p><p>Gracias por leer :)</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ ¿Qué es el DOM? El significado del modelo de objeto de documento en JavaScript ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Jessica Wilkins [https://www.freecodecamp.org/news/author/jessica-wilkins/] Artículo original What is the DOM? Document Object Model Meaning in JavaScript [https://www.freecodecamp.org/news/what-is-the-dom-document-object-model-meaning-in-javascript/] Traducido y adaptado por Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] Si acabas de empezar a aprender JavaScript, es posible que hayas oído hablar del DOM. Pero, ¿qué es exactamente? En este artículo, ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/que-es-el-dom-el-significado-del-modelo-de-objeto-de-documento-en-javascript-3/</link>
                <guid isPermaLink="false">61faea99e56f6e08aa1c41c8</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Fri, 04 Feb 2022 19:32:36 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/joan-gamell-ZS67i1HLllo-unsplash-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Artículo original escrito por <a href="https://www.freecodecamp.org/news/author/jessica-wilkins/">Jessica Wilkins</a><br>Artículo original <a href="https://www.freecodecamp.org/news/what-is-the-dom-document-object-model-meaning-in-javascript/">What is the DOM? Document Object Model Meaning in JavaScript</a><br>Traducido y adaptado por <a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p>Si acabas de empezar a aprender JavaScript, es posible que hayas oído hablar del DOM. Pero, ¿qué es exactamente?</p><p>En este artículo, te explicaré qué es el DOM y te proporcionaré algunos ejemplos con código JavaScript.</p><p>Veremos cómo seleccionar elementos de un documento HTML, cómo crear elementos, cómo cambiar estilos CSS en línea y cómo escuchar eventos.</p><h2 id="-qu-es-el-dom">¿Qué es el DOM?</h2><p>DOM son las siglas de Document Object Model. Es una interfaz de programación que nos permite crear, cambiar o eliminar elementos del documento. También podemos añadir eventos a estos elementos para hacer nuestra página más dinámica.</p><p>El DOM visualiza el documento HTML como un árbol de nodos. Un nodo representa un elemento HTML.</p><p>Echemos un vistazo a este código HTML para entender mejor la estructura de árbol del DOM.</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;title&gt;Estructura de arbol del DOM&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;Estructura de árbol del DOM&lt;/h1&gt;
    &lt;h2&gt;Aprender sobre el DOM&lt;/h2&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre><p>Nuestro documento se llama nodo raíz y contiene un nodo hijo que es el elemento <code>&lt;html&gt;</code>. El elemento <code>&lt;html&gt;</code> contiene dos hijos que son los elementos <code>&lt;head&gt;</code> y <code>&lt;body&gt;</code>.</p><p>Tanto el elemento <code>&lt;head&gt;</code> como el elemento<code>&lt;body&gt;</code> tienen hijos propios.</p><p>Esta es otra forma de visualizar el árbol de nodos.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Document.jpg" class="kg-image" alt="Document" width="600" height="400" loading="lazy"></figure><p>Podemos acceder a estos elementos en el documento y hacer cambios en ellos usando JavaScript.</p><p>Veamos algunos ejemplos de cómo podemos trabajar con el DOM utilizando JavaScript.</p><h2 id="c-mo-seleccionar-elementos-en-el-documento">Cómo seleccionar elementos en el documento</h2><p>Hay varios métodos distintos para seleccionar un elemento en el documento HTML.</p><p>En este artículo, nos centraremos en tres de esos métodos:</p><ul><li><code>getElementById()</code></li><li><code>querySelector()</code></li><li><code>querySelectorAll()</code></li></ul><h3 id="getelementbyid-"><strong><strong><code>getElementById()</code></strong></strong></h3><p>En el HTML, los <code>id</code> se utilizan como identificadores únicos para los elementos HTML. Esto significa que no se puede tener el mismo nombre del <code>id</code> para dos elementos diferentes.</p><p>Esto sería incorrecto:</p><pre><code class="language-html">&lt;p id="para"&gt;Este es mi primer párrafo.&lt;/p&gt;
&lt;p id="para"&gt;Este es mi segundo párrafo.&lt;/p&gt;</code></pre><p>Tendrías que asegurarte de que esos <code>id</code>s son únicos, como este:</p><pre><code class="language-html">&lt;p id="para1"&gt;Este es mi primer párrafo.&lt;/p&gt;
&lt;p id="para2"&gt;Este es mi segundo párrafo.&lt;/p&gt;</code></pre><p>En JavaScript, podemos tomar una etiqueta HTML haciendo referencia al nombre del <code>id</code>.</p><pre><code class="language-js">document.getElementById("el nombre del id va aquí")</code></pre><p>Este código le dice a la computadora que obtenga el elemento <code>&lt;p&gt;</code> con el <code>id</code> de <code>para1</code> e imprima el elemento en la consola.</p><pre><code class="language-js">const parrafo1 = document.getElementById("para1");
console.log(parrafo1);</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-14.png" class="kg-image" alt="image-14" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/image-14.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-14.png 865w" sizes="(min-width: 720px) 720px" width="865" height="111" loading="lazy"></figure><p>Si quisiéramos solo leer el contenido del párrafo, entonces podemos utilizar la propiedad <code>textContent</code> dentro del <code>console.log()</code>.</p><pre><code class="language-js">const parrafo1 = document.getElementById("para1");
console.log(parrafo1.textContent);</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-10.png" class="kg-image" alt="image-10" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/image-10.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-10.png 653w" width="653" height="126" loading="lazy"></figure><h3 id="queryselector-"><strong><strong><code>querySelector()</code></strong></strong></h3><p>Puedes utilizar este método para encontrar elementos con uno o más selectores CSS.</p><p>He creado este ejemplo HTML de mis programas de televisión favoritos:</p><pre><code class="language-html">&lt;h1&gt;Programas de televisión favoritos&lt;/h1&gt;
&lt;ul class="list"&gt;
  &lt;li&gt;Golden Girls&lt;/li&gt;
  &lt;li&gt;Archer&lt;/li&gt;
  &lt;li&gt;Rick and Morty&lt;/li&gt;
  &lt;li&gt;The Crown&lt;/li&gt;
&lt;/ul&gt;</code></pre><p>Si quisieras obtener e imprimir en la consola el elemento <code>h1</code>, entonces podrías &nbsp;usar el nombre de la etiqueta dentro del <code>querySelector()</code>.</p><pre><code class="language-js">const elementoH1 = document.querySelector("h1");
console.log(elementoH1);</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-19.png" class="kg-image" alt="image-19" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/image-19.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-19.png 800w" sizes="(min-width: 720px) 720px" width="800" height="102" loading="lazy"></figure><p>Si quiero apuntar a &nbsp;<code>class="list"</code> para imprimir la lista desordenada en la consola, entonces usaría <code>.list</code> dentro del <code>querySelector()</code>.</p><p>El <code>.</code> antes de <code>list</code> le dice a la computadora que apunte al nombre de la clase. Si quieres apuntar a un <code>id</code> entonces utilizarías un símbolo <code>#</code> antes del nombre.</p><pre><code class="language-js">const lista = document.querySelector(".list");
console.log(lista);</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-20.png" class="kg-image" alt="image-20" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/image-20.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-20.png 913w" sizes="(min-width: 720px) 720px" width="913" height="277" loading="lazy"></figure><h3 id="queryselectorall-"><strong><strong><code>querySelectorAll()</code></strong></strong></h3><p>Este método encuentra todos los elementos que coinciden con el selector CSS y devuelve una lista de todos esos nodos.</p><p>Si quisiera encontrar todos los elementos <code>&lt;li&gt;</code> en nuestro ejemplo, podría utilizar el combinador <code>&gt;</code> para encontrar todos los hijos del <code>&lt;ul&gt;</code>.</p><pre><code class="language-js">const listaElementos = document.querySelectorAll("ul &gt; li");
console.log(listaElementos); </code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-26.png" class="kg-image" alt="image-26" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/image-26.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-26.png 617w" width="617" height="166" loading="lazy"></figure><p>Si quisiéramos imprimir los elementos <code>&lt;li&gt;</code> con los programas de televisión, podemos utilizar un <code>forEach()</code> para hacer un bucle sobre el NodeList e imprimir cada elemento.</p><pre><code class="language-js">const listaElementos = document.querySelectorAll("ul &gt; li");

listaElementos.forEach((elemento) =&gt; {
  console.log(elemento);
});</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-26-at-3.42.13-PM.png" class="kg-image" alt="Screen-Shot-2021-09-26-at-3.42.13-PM" width="600" height="400" loading="lazy"></figure><h2 id="c-mo-a-adir-nuevos-elementos-al-documento">Cómo añadir nuevos elementos al documento</h2><p>Podemos utilizar &nbsp;<code>document.createElement()</code> para añadir nuevos elementos al árbol del DOM.</p><p>Veamos este ejemplo:</p><pre><code class="language-html">&lt;h1&gt;Razones por las que me encanta freeCodeCamp:&lt;/h1&gt;</code></pre><p>Ahora mismo, solo tengo una etiqueta <code>&lt;h1&gt;</code> en la página. Pero quiero añadir una lista de razones por las que me gusta freeCodeCamp debajo de esa etiqueta <code>&lt;h1&gt;</code> utilizando JavaScript.</p><p>Primero podemos crear un elemento <code>&lt;ul&gt;</code> usando <code>document.createElement()</code>. Lo asignaré a una variable llamada <code>listaDesordenada</code>`.</p><pre><code class="language-js">let listaDesordenada = document.createElement("ul");
</code></pre><p>Luego tenemos que añadir ese elemento <code>&lt;ul&gt;</code> al documento utilizando el método <code>appendChild()</code>.</p><pre><code class="language-js">document.body.appendChild(listaDesordenada);</code></pre><p>La siguiente parte es añadir un par de elementos <code>&lt;li&gt;</code> dentro del elemento <code>&lt;ul&gt;</code> utilizando el método <code>createElement()</code>.</p><pre><code class="language-js">let listaElemento1 = document.createElement("li");

let listaElemento2 = document.createElement("li");</code></pre><p>Luego podemos utilizar la propiedad <code>textContent</code> para añadir el texto de nuestros elementos de la lista.</p><pre><code class="language-js">let listaElemento1 = document.createElement("li");
listaElemento1.textContent = "Es gratis";

let listaElemento2 = document.createElement("li");
listaElemento2.textContent = "Es impresionante";
</code></pre><p>La última parte es utilizar el método <code>appendChild()</code> para que los elementos de la lista se añadan a la lista desordenada.</p><pre><code class="language-js">let listaElemento1 = document.createElement("li");
listaElemento1.textContent = "Es gratis";
listaDesordenada.appendChild(listaElemento1);

let listaElemento2 = document.createElement("li");
listaElemento2.textContent = "Es impresionante";
listaDesordenada.appendChild(listaElemento2);</code></pre><p>Este es el resultado de todo el código.</p><pre><code class="language-js">let listaDesordenada = document.createElement("ul");
document.body.appendChild(listaDesordenada);

let listaElemento1 = document.createElement("li");
listaElemento1.textContent = "Es gratis";
listaDesordenada.appendChild(listaElemento1);

let listaElemento2 = document.createElement("li");
listaElemento2.textContent = "Es impresionante";
listaDesordenada.appendChild(listaElemento2);</code></pre><p>Este es el resultado de la página:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-24.png" class="kg-image" alt="image-24" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/image-24.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/02/image-24.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-24.png 1370w" sizes="(min-width: 720px) 720px" width="1370" height="370" loading="lazy"></figure><h2 id="c-mo-utilizar-la-propiedad-style-para-cambiar-los-estilos-css-en-l-nea">Cómo utilizar la propiedad Style para cambiar los estilos CSS en línea</h2><p>La propiedad <code>style</code> le da la capacidad de cambiar el CSS en su documento HTML.</p><p>En este ejemplo, vamos a cambiar el texto <code>h1</code> de negro a azul utilizando la propiedad <code>style</code>.</p><p>Aquí está nuestro HTML.</p><pre><code class="language-html">&lt;h1&gt;Me cambiaron al color azul utilizando JavaScript&lt;/h1&gt;
</code></pre><p>Primero tenemos que tomar la etiqueta <code>h1</code> utilizando el método <code>querySelector()</code>.</p><pre><code class="language-js">const h1 = document.querySelector("h1");</code></pre><p>A continuación, usamos <code>h1.style.color</code> para cambiar el texto del &nbsp;<code>h1</code> de negro a azul.</p><pre><code class="language-js">const h1 = document.querySelector("h1");
h1.style.color = "blue";</code></pre><p>Este es el resultado en el navegador:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-25.png" class="kg-image" alt="image-25" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/image-25.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/02/image-25.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-25.png 1481w" sizes="(min-width: 720px) 720px" width="1481" height="287" loading="lazy"></figure><p>Puede utilizar esta propiedad <code>style</code> para cambiar una serie de estilos CSS en línea incluyendo el <code>background-color</code>, <code>border-style</code>, <code>font-size</code> y más.</p><h2 id="c-mo-usar-addeventlistener-para-escuchar-eventos-en-la-p-gina">Cómo usar addEventListener() para escuchar eventos en la página</h2><p>Este método le permite añadir un evento a un elemento HTML como un botón.</p><p>En este ejemplo, cuando el usuario haga clic en el botón, aparecerá un mensaje de alerta.</p><p>En nuestro HTML, tenemos un elemento button con el <code>id</code> de <code>btn</code>.</p><pre><code class="language-html">  &lt;button id="btn"&gt;Mostrar alerta&lt;/button&gt;
</code></pre><p>Podemos apuntar a ese elemento en nuestro JavaScript usando el método <code>getElementById()</code> y asignándolo a la variable llamada <code>boton</code>`.</p><pre><code class="language-js">const boton = document.getElementById("btn");
</code></pre><p>La función <code>addEventListener()</code> toma un tipo de evento y una función. El tipo de evento será un evento <code>click</code> y la función activará el mensaje de alerta.</p><p>Este es el código para añadir el evento que escucha a la variable <code>boton</code>`.</p><pre><code class="language-js">boton.addEventListener("click", () =&gt; {
  alert("Gracias por hacer clic en mí");
});</code></pre><p>Este es el código completo en el que puedes hacer clic en el botón y aparecerá el mensaje de alerta:</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_abwQwPb" src="https://codepen.io/jessica-wilkins/embed/preview/abwQwPb?default-tabs=css%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=abwQwPb" title="Embedded content" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; width: 720px; overflow: hidden;"></iframe></figure><h2 id="c-mo-utilizar-el-dom-en-proyectos-reales">Cómo utilizar el DOM en proyectos reales</h2><p>Esa fue una breve introducción a algunos de los métodos del DOM que puedes utilizar. Hay muchos más ejemplos que no hemos cubierto en este artículo.</p><p>Si quieres empezar a construir proyectos de JavaScript para principiantes y trabajar con el DOM, entonces te sugiero que mires mi artículo <a href="https://www.freecodecamp.org/espanol/news/40-proyectos-de-javascript-para-principiantes-ideas-faciles-para-empezar-a-codificar-en-js/">40 proyectos de JavaScript para principiantes</a>.</p><h2 id="conclusi-n">Conclusión</h2><p>DOM significa Document Object Model y es una interfaz de programación que nos permite crear, cambiar o eliminar elementos del documento. También podemos añadir eventos a estos elementos para que nuestra página sea más dinámica.</p><p>Puedes seleccionar elementos en JavaScript utilizando métodos como <code>getElementById(), querySelector()</code>, y <code>querySelectorAll()</code>.</p><p>Si quieres añadir nuevos elementos al documento puedes utilizar <code>document.createElement()</code>.</p><p>También puedes cambiar los estilos CSS en línea de los elementos utilizando la propiedad <code>style</code>.</p><p>Si quieres añadir eventos a los elementos, como los botones, puedes utilizar la función <code>addEventListener()</code>.</p><p>Espero que hayas disfrutado de este artículo y que tengas mucha suerte en tu viaje con JavaScript.<br></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ ¿Qué son los Bookmarklets? Cómo usar JavaScript para hacer un Bookmarklet en Chromium y Firefox ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Seth Falco [https://www.freecodecamp.org/news/author/seth/] Artículo original What are Bookmarklets? How to Use JavaScript to Make a Bookmarklet in Chromium and Firefox [https://www.freecodecamp.org/news/what-are-bookmarklets/] Traducido y adaptado por Keiler Guardo Herrera [/espanol/news/author/keilerguardo/] Bookmarklets [https://es.wikipedia.org/wiki/Bookmarklet] son marcadores del navegador que ejecutan JavaScript en lugar de abrir una página web. También ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/que-son-los-bookmarklets/</link>
                <guid isPermaLink="false">61f19dd0e56f6e08aa1c3714</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Fri, 28 Jan 2022 03:35:21 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/01/cover-defectivefox-o-1-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong>Artículo original escrito por </strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/seth/">Seth Falco</a><br><strong><strong><strong><strong>Artículo original</strong></strong> </strong></strong><a href="https://www.freecodecamp.org/news/what-are-bookmarklets/">What are Bookmarklets? How to Use JavaScript to Make a Bookmarklet in Chromium and Firefox</a><br><strong><strong><strong><strong>Traducido y adaptado por </strong></strong></strong></strong><a href="https://www.freecodecamp.org/espanol/news/author/keilerguardo/">Keiler Guardo Herrera</a></p><p><a href="https://es.wikipedia.org/wiki/Bookmarklet">Bookmarklets</a> son marcadores del navegador que ejecutan JavaScript en lugar de abrir una página web. También se conocen como applets de marcadores, favlets o marcadores de JavaScript.</p><p>Los Bookmarklets están disponibles de forma nativa en los principales navegadores, incluyendo Mozilla Firefox y navegadores basados en Chromium como Chrome o Brave.</p><h2 id="scripting-con-javascript">Scripting con JavaScript</h2><p>Aprender a escribir scripts ofrece muchas ventajas, sobre todo el enorme ahorro de tiempo que supone automatizar tareas repetitivas o tediosas.</p><p>Si no eres un desarrollador, la idea de aprender a codificar puede ser intimidante, sin embargo, el scripting no requiere conocimientos de ingeniería de software o patrones de diseño. El objetivo no es hacer software escalable, sino automatizar tareas especializadas o triviales.</p><p>Independientemente de la profesión, incluso si nunca has escrito código antes, considera lo que haces en tu navegador. Si alguna vez sientes que lo que haces es repetitivo o robótico, considera la posibilidad de delegar la tarea a un robot real.</p><h2 id="casos-de-uso-de-los-bookmarklets">Casos de uso de los Bookmarklets</h2><p>Con los bookmarklets, puedes manipular la página actual, ya que la función tendrá el contexto de la pestaña actual. Esto significa que puedes:</p><ul><li>Hacer clic en los botones virtualmente</li><li>Modificar el contenido</li><li>Utilizar el contenido de la página para abrir una nueva página</li><li>Eliminar elementos de la página</li></ul><p>También puedes hacer marcadores que no utilicen el contexto en absoluto, como abrir condicionalmente una URL o generar HTML para una nueva pestaña.</p><p>Encontrarás algunos bookmarklets que se realizaron para este artículo en la sección de Ejemplos de Bookmarklets. Son solo para demostración, pero deberían hacer evidentes las capacidades e implementaciones.</p><h2 id="como-crear-bookmarklets">Como crear Bookmarklets</h2><p>La creación de un bookmarklet es casi idéntica a la de un marcador normal. La única diferencia es que escribirás JavaScript en el campo de URL en lugar de una URL HTTP/HTTPS.</p><h3 id="navegar-hasta-el-men-de-marcadores">Navegar hasta el menú de marcadores</h3><h4 id="mozilla-firefox"><strong>Mozilla Firefox</strong></h4><p>Ya sea en la barra de marcadores o en la barra lateral de marcadores (<code>CTRL</code> + <code>B</code>), puedes hacer clic con el botón derecho del ratón y luego hacer clic en "Añadir marcador...":</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/06/firefox-1.png" class="kg-image" alt="The &quot;Add bookmark&quot; modal when creating a new bookmark in Firefox." width="600" height="400" loading="lazy"></figure><h4 id="chromium"><strong>Chromium</strong></h4><p>Puedes hacer clic con el botón derecho del ratón en la barra de marcadores y luego hacer clic en "Añadir página...". También puedes ir a tu administrador de marcadores, hacer clic con el botón derecho del ratón y pulsar "Añadir nuevo marcador":</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/06/chromium.png" class="kg-image" alt="The &quot;Edit bookmark&quot; modal when creating a new bookmark in Chromium." width="600" height="400" loading="lazy"></figure><h2 id="como-escribir-un-bookmarklet">Como escribir un Bookmarklet</h2><p>En el campo URL del marcador, escriba una función JavaScript con el siguiente formato.</p><pre><code class="language-js">javascript: (() =&gt; {
  // Tu código aquí!
})();</code></pre><p><code>javascript:</code> es el protocolo de la URL. Indica que el navegador debe ejecutar el marcador como JavaScript.</p><p><code>(() =&gt; { })</code> define una función anónima (lambda). Debes escribir el código que quieres ejecutar entre las llaves.</p><p><code>();</code> ejecutará la función anónima que acabas de crear.</p><figure class="kg-card kg-code-card"><pre><code class="language-js">javascript: (() =&gt; {
  alert('Hola, Mundo!');
})();</code></pre><figcaption>"Hola, Mundo!", como un marcador del navegador.</figcaption></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-147-1.png" class="kg-image" alt="A browser alert with the message: &quot;Hello, World!&quot;" width="600" height="400" loading="lazy"></figure><p>También puedes hacer que genere HTML y abrirlo como un documento HTML:</p><pre><code class="language-js">javascript: (() =&gt; {
  return '&lt;h1 style="color: white; background-color: black;"&gt;Hola, Mundo!&lt;/h1&gt;';
})();</code></pre><h3 id="espacio-para-los-bookmarklets">Espacio para los Bookmarklets</h3><p>La mayoría de los navegadores no permiten un campo de entrada de varias líneas en la URL de los marcadores, por lo que normalmente tendrás que hacer un uso estricto de llaves (<code>{</code> y <code>}</code>), también puntos y comas (<code>;</code>) cuando escribas bookmarklets. Esto es especialmente importante cuando se trata de construcción de condicionales (<code>if</code>/<code>for</code>/<code>while</code>).</p><p>Aparte de esto, el espaciado no importa. No tengas miedo de tener mucho código en una línea porque es todo lo que tienes:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">javascript: (() =&gt; {   const documentoHTML = document.documentElement.outerHTML;   const coincidencias = documentHTML.matchAll(/[\w.+=~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*/g);   const coincidenciasFijas = Array.from(coincidencias).map((elemento) =&gt; elemento[0]);   const coincidenciasUnicas
 = Array.from(new Set(coincidenciasFijas));      if (coincidenciasUnicas.length &gt; 0) {     const resultado = coincidenciaFija.join('\n');     alert(resultado);   } else {     alert('No se han encontrado correos electrónicos.');   } })();</code></pre><figcaption>Ejemplo de una función JavaScript escrita en una línea.</figcaption></figure><p>Si tu script es complejo, será más fácil mantener tu bookmarklet en un editor de código como <a href="https://code.visualstudio.com/">Visual Studio Code</a>. Puedes copiarlo y pegarlo en tu navegador cuando esté listo.</p><h3 id="c-mo-interactuar-con-los-sitios-web">Cómo interactuar con los sitios web</h3><p>Lo más habitual es que los bookmarklets sirvan para manipular o interactuar con los sitios web que tienes abiertos.</p><h4 id="el-global-document-object"><strong>El Global Document Object</strong></h4><p>Como el bookmarklet tiene el contexto de la página en la que se encuentra, tiene acceso al <code><a href="https://developer.mozilla.org/es/docs/Web/API/Document">document</a></code> object.</p><p>Las funciones ideales para seleccionar elementos para nuestro caso de uso son:</p><ul><li><code><a href="https://developer.mozilla.org/es/docs/Web/API/Document/querySelector">querySelector</a></code> para seleccionar un solo elemento por el selector CSS.</li><li><code><a href="https://developer.mozilla.org/es/docs/Web/API/Document/querySelectorAll">querySelectorAll</a></code> para seleccionar todos los elementos que coincidan por el selector CSS.</li><li><code>evaluate</code> para seleccionar todos los elementos coincidentes por XPath.</li></ul><p>Existen otras funciones como <code><a href="https://developer.mozilla.org/es/docs/Web/API/Document/getElementById">getElementById</a></code> y <code><a href="https://developer.mozilla.org/es/docs/Web/API/Document/getElementsByClassName">getElementsByClassName</a></code>, pero queremos evitar los falsos positivos, por lo que siempre haremos una selección estricta utilizando múltiples atributos de elementos.</p><h4 id="selectores-css-y-xpath">Selectores CSS y XPath</h4><p>Si solamente está seleccionando elementos basados en nombres de los elementos, IDs, clases y otros atributos, usar un selector CSS será simple y eficiente.</p><p>Los selectores CSS se emplean para seleccionar elementos en documentos HTML para aplicar estilos. Si estás familiarizado con el desarrollo web o con CSS en general, entonces ya sabes cómo utilizar los selectores CSS. (Más información: <a href="https://developer.mozilla.org/es/docs/Web/CSS/CSS_Selectors">MDN</a>)</p><p>Si también necesita hacer coincidir el contenido de texto de un elemento, entonces tendrá que usar XPath en su lugar.</p><p>XPath se emplea para atravesar documentos XML, proporciona todas las capacidades de los selectores de CSS y más, incluida la comparación del contenido de los elementos o el uso de una expresión regular para que coincida. (Más información: <a href="https://developer.mozilla.org/es/docs/Web/XPath">MDN</a> , <a href="https://es.wikipedia.org/wiki/XPath">Wikipedia</a>).</p><h4 id="c-mo-seleccionar-elementos-de-la-p-gina-web"><strong>Cómo seleccionar elementos de la página web</strong></h4><p>Uno de los usos más comunes de los bookmarklets es la manipulación de páginas web. Para interactuar, manipular o eliminar elementos de la página, siempre tendrá que seleccionar los elementos primero.</p><ol><li>Primero abra las herramientas de desarrollo del navegador presionando, <code>F12</code>o <code>CTRL</code>+ <code>SHIFT</code>+<code>I</code> .</li><li>Haga clic en <a href="https://developer.mozilla.org/es/docs/Tools/Page_Inspector">Inspector de página</a> / Elementos, que muestra el documento HTML completo de la página que tiene abierta.</li><li>Utilice la herramienta de selección de elementos (<code>CTRL</code>+ <code>SHIFT</code>+ <code>C</code>) y haga clic en el elemento con el que desea interactuar. El visor de documentos se desplazará hasta el elemento en el que hizo clic en el documento HTML. Verá el ID del elemento, las clases y los atributos.</li><li>Comprueba si estás en el elemento correcto. Los elementos se pueden anidar donde es más fácil navegar manualmente en el HTML. Por ejemplo, es posible que haya hecho clic en un elemento <code>svg</code>, pero en realidad necesitaba el <code>button</code> o un <code>div</code> dentro del mismo.</li><li>Defina un selector de CSS o XPath que coincida con todo lo que desea, es posible que desee que sea más estricto de lo necesario para evitar posibles falsos positivos.</li></ol><p>Por ejemplo, supongamos que quisiera descartar todas las sugerencias de temas en Twitter porque son molestas. Así es como se ve un elemento en el que se puede hacer clic para descartar un tema.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/06/Screen-Shot-2021-06-16-at-04.19.17.png" class="kg-image" alt="Sugerencias de temas de Twitter, con un botón X para marcarlo como &quot;No me interesa&quot;." width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Sugerencias de temas de Twitter, con un botón X para marcarlo como "No me interesa".</font></font></figcaption></figure><pre><code class="language-html">&lt;div aria-label="Dismiss" role="button" tabindex="0" class="..."&gt;
  &lt;!-- El elemento div padre está escuhando los clics --&gt;
  &lt;div class="..."&gt;
    &lt;svg viewBox="0 0 24 24" aria-hidden="true" class="..."&gt;
      &lt;!-- El icono actual de la X. --&gt;
    &lt;/svg&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre><p>Un selector apropiado es <code>div[aria-label=Dismiss][role=button]</code>.</p><p>Necesitamos usar la función <code>querySelectorAll</code> del Global Document Object , luego llamar el método <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click"><code>click</code></a> para simular un clic.</p><p>Se puede implementar un bookmarklet para seleccionar cada botón de eliminar y activar un evento clic para todos ellos, con un intervalo de 250 ms.</p><figure class="kg-card kg-code-card"><pre><code>javascript: (() =&gt; {
  const selector = 'div[aria-label=Dismiss][role=button]';
  const temas = document.querySelectorAll(selector);
    
  for (let i = 0; i &lt; temas.length; i++) {
    let tema = temas[i];
    setTimeout(() =&gt; tema.click(), i * 250);
  }
})();</code></pre><figcaption>Marca todos los temas sugeridos en Twitter como "No me interesa".</figcaption></figure><h2 id="c-mo-redistribuir-marcadores"><strong>Cómo redistribuir marcadores</strong></h2><p>Para "instalar" un bookmarklet, los usuarios crean un marcador en su navegador, copian y pegan el código en él.</p><p>Esto puede ser inconveniente, por lo que es común vincular bookmarklets al compartir. Esto es tan simple como ponerlo en el atributo <code>href</code> del enlace.</p><pre><code class="language-html">&lt;a href="javascript: (() =&gt; {   alert('Hola, Mundo!'); })();"&gt;
  Hola, Mundo!
&lt;/a&gt;</code></pre><p>Ahora los usuarios pueden hacer clic derecho y "Agregar enlace", o arrastrarlo a la barra de marcadores para un fácil acceso.</p><p>Al hacer clic en el enlace de la página web, se ejecutará el script inmediatamente. Asegúrese de que no obstruya lo que un usuario está tratando de lograr en su sitio si accidentalmente hace clic en él.</p><p>Por ejemplo, el siguiente enlace mostrará una alerta con un "<a href="unsafe:javascript: (() => {   alert('Hola, Mundo!'); })();">¡Hola, mundo!</a>.</p><h3 id="omisi-n-de-pol-tica-de-seguridad-de-contenido-y-contenido-de-usuario"><strong>Omisión de política de seguridad de contenido y contenido de usuario</strong></h3><p>Si gestionas un servicio que permite que el contenido generado por el usuario contenga HTML personalizado, es importante limpiar los enlace (<code>a</code>).</p><p>El bookmarklet se ejecuta como código en la consola de herramientas para desarrolladores y omite la <a href="https://developer.mozilla.org/es/docs/Web/HTTP/CSP">Política de seguridad de contenido</a> (CSP) configurada.</p><p>El link de "¡Hola, mundo!" puede enviar datos con la misma facilidad a otro servidor, incluida la entrada de campos de formulario o cookies.</p><p>Como proveedor de servicios, es importante tener cuidado de que los usuarios puedan explotar esto para compartir código malicioso en su plataforma. Si su enlace se ejecuta en una página bajo su dominio, puede acceder a información confidencial en la página y <code><a href="https://developer.mozilla.org/es/docs/web/api/document/cookie">document.cookies</a></code>.</p><p>Puede probarlo usted mismo en un entorno de pruebas:</p><pre><code class="language-html">&lt;a href="javascript: (() =&gt; {   alert(document.cookie); })();"&gt;
  ScriptMalicioso
&lt;/a&gt;</code></pre><h3 id="ejecute-solo-c-digo-en-el-que-conf-e"><strong>Ejecute solo código en el que confíe</strong></h3><p>Como usuario, es importante tener en cuenta que cualquier código puede ser malicioso, sólo hay que hacer clic o añadir marcadores cuando al menos una de las siguientes cosas sea cierta:</p><ul><li>Provino de una fuente confiable.</li><li>Conoce JavaScript y revisó lo que hace.</li><li>Alguien en quien confía conoce JavaScript y lo revisó por usted.</li></ul><h2 id="privacidad-y-seguridad"><strong>Privacidad y seguridad</strong></h2><p>Los bookmarklets pueden ser útiles, pero también tenemos extensiones web y scripts de usuario . ¿Qué los hace diferentes?</p><p>Las extensiones web son increíblemente fáciles de usar y flexibles. Los marcadores no pueden bloquear solicitudes de red, actualizar contenido a medida que cambia la página ni administrar pestañas.</p><p>Sin embargo, hay algunos beneficios en el uso de bookmarklets sobre cualquier otra cosa, a saber, para la privacidad y la seguridad.</p><p>Una extensión que modifica la fuente en todas las páginas debe obtener permiso para acceder a todos los datos en todas las páginas web. En Firefox y Chrome, esto incluye todos los campos de entrada y contraseña. (Más información: <a href="https://support.mozilla.org/es/kb/solicitudes-de-permiso-para-las-extensiones-de-firefox#w_access-your-data-for-all-websites">Mozilla</a> , <a href="https://developer.chrome.com/docs/extensions/mv3/permission_warnings/#permissions_with_warnings">Google</a> )</p><p>Por el contrario, un bookmarklet solo tiene acceso a la página en el momento en que se ejecuta y solo cuando el usuario lo activa manualmente.</p><p>Esto da como resultado un menor riesgo de malware, un empleado deshonesto no puede enviar una actualización maliciosa y los datos no se enviarán silenciosamente a otros servidores.</p><p>Chrome Web Store ha tenido previamente varias extensiones maliciosas que tuvieron que eliminarse. Algunos de los cuales tenían millones de instalaciones antes de ser eliminados. ( <a href="https://es.wikipedia.org/wiki/Chrome_Web_Store#Malware">Más Información</a> )</p><h2 id="ejemplo-de-bookmarklets"><strong>Ejemplo de Bookmarklets</strong></h2><p>Aquí hay una lista de ideas de bookmarklet, junto con el código que lo implementa. Puede copiarlos y pegarlos en nuevos marcadores para probarlos.</p><figure class="kg-card kg-code-card"><pre><code class="language-js">javascript: (() =&gt; {
  const documentHTML = document.documentElement.outerHTML;
  const coincidencias = documentHTML.matchAll(/[\w.+=~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*/g);
  const coincidenciasFijas = Array.from(coincidencias).map((elemento) =&gt; elemento[0]);
  const coincidenciasUnicas = Array.from(new Set(coincidenciasFijas));
  
  if (coincidenciasUnicas.length &gt; 0) {
    const resultado = coincidenciasUnicas.join('\n');
    alert(resultado);
  } else {
    alert('o se han encontrado correos electrónicos.');
  }
})();</code></pre><figcaption>Busca enlaces como "Empleados", "Carreras" o "Contratación" en la página y hace clic en él.</figcaption></figure><figure class="kg-card kg-code-card"><pre><code class="language-js">javascript: (() =&gt; {
  const todoLosElementos = document.querySelectorAll('*');

  for (let elemento of todoLosElementos) {
    elemento.style.fontFamily = 'Comic Sans MS';
  }
})();</code></pre><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Establezca la fuente de todo el texto en la página actual en "Comic Sans MS".</font></font></figcaption></figure><figure class="kg-card kg-code-card"><pre><code class="language-js">javascript: (() =&gt; {
  const destino = "https://www.freecodecamp.org/";
  const alternativa = "https://tenor.com/Y6jj.gif";
  
  const fecha = new Date();
  const horas = fecha.getHours();
    
  if (horas &lt; 3 || horas &gt;= 6) {
    window.open(destino);
  } else {
    window.open(alternativa);
  }
})();</code></pre><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Abra freeCodeCamp, pero abra un GIF en su lugar si es entre las 03:00 y las 06:00.</font></font></figcaption></figure><figure class="kg-card kg-code-card"><pre><code class="language-js">javascript: (() =&gt; {
  const destino = "https://www.freecodecamp.org/";
  const alternativa = "https://tenor.com/Y6jj.gif";
  
  const fecha = new Date();
  const horas = fecha.getHours();
    
  if (horas &lt; 3 || horas &gt;= 6) {
    window.open(destino);
  } else {
    window.open(alternativa);
  }
})();</code></pre><figcaption>Abre freeCodeCamp, pero si la hora actual marca entre 03:00 y las 06:00 abre un GIF en su lugar.</figcaption></figure><p>¡Gracias por leer! Ahora ve y crea tus propios bookmarklets.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ JavaScript Splice: Como utilizar el metodo .splice() de arreglo en JS ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Nathan Sebhastian [https://www.freecodecamp.org/news/author/nsebhastian/] Artículo original JavaScript Splice – How to Use the .splice() JS Array Method [https://www.freecodecamp.org/news/javascript-splice-how-to-use-the-splice-js-array-method/] Traducido y adaptado por Keiler Guardo Herrera El método splice() es un método incorporado en los arreglos de JavaScript. Que permite cambiar el contenido del arreglo eliminando o sustituyendo ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/javascript-splice-como-ulitizar-el-metodo-splice-de-arreglo-en-js/</link>
                <guid isPermaLink="false">60ee1c7d24a25c0910156d14</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Keiler Guardo Herrera ]]>
                </dc:creator>
                <pubDate>Mon, 30 Aug 2021 02:49:08 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/08/JavaScript-splice-method.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong>Artículo original escrito por </strong></strong><a href="https://www.freecodecamp.org/news/author/nsebhastian/">Nathan Sebhastian</a><br><strong><strong>Artículo original</strong> </strong><a href="https://www.freecodecamp.org/news/javascript-splice-how-to-use-the-splice-js-array-method/">JavaScript Splice – How to Use the .splice() JS Array Method</a><br><strong><strong>Traducido y adaptado por </strong></strong>Keiler Guardo Herrera</p><p>El método <code>splice()</code> es un método incorporado en los arreglos de JavaScript. Que permite cambiar el contenido del arreglo eliminando o sustituyendo los elementos existentes por otros nuevos.</p><p>Este método modifica el arreglo original y retorna los elementos eliminados como un nuevo arreglo.</p><p>En este tutorial, aprenderás cómo puedes eliminar, añadir o reemplazar elementos de un arreglo utilizando el método <code>splice()</code>. Vamos a empezar con la eliminación de los elementos de un arreglo en primer lugar. Este método modifica el arreglo original y retorna los elementos eliminados como un nuevo arreglo.</p><h2 id="c-mo-eliminar-elementos-de-un-arreglo-con-splice-">Cómo eliminar elementos de un arreglo con splice()</h2><p>Por ejemplo, supongamos que tenemos un arreglo llamado <code>meses</code>, pero que tiene algunos nombres de los días en el arreglo como los siguientes:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">let meses = ["enero", "febrero", "lunes", "martes"];</code></pre><figcaption>Un conjunto mixto de nombres de meses y de días</figcaption></figure><p>Puedes utilizar el método <code>splice()</code> para eliminar los nombres de los días del arreglo <code>meses</code> y añadirlos a un nuevo arreglo al mismo tiempo:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">let meses = ["enero", "febrero", "lunes", "martes"];
let dias = meses.splice(2);

console.log(dias); // ["lunes", "martes"]</code></pre><figcaption>Creación del arreglo días</figcaption></figure><p>El método <code>splice()</code> necesita al menos un parámetro, que es el índice de <code>inicio</code> donde comienza la operación. En el código anterior, se pasa el número <code>2</code> al método, lo que significa que <code>splice()</code> empezará a eliminar elementos desde el índice <code>2</code>.</p><p>También puedes definir cuántos elementos quieres eliminar del arreglo pasando un segundo argumento <code>numero</code> conocido como <code>eliminaConteo</code>. Por ejemplo, para eliminar solo un elemento, puede pasar el número <code>1</code> de esta manera:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">let meses = ["enero", "febrero", "lunes", "martes"];
let dias = meses.splice(2, 1);

console.log(dias); // ["lunes"]
console.log(meses); // ["enero", "febrero", "martes"]</code></pre><figcaption>Eliminando sólo un elemento del arreglo</figcaption></figure><p>Si se omite el parámetro <code>eliminaConteo</code>, <code>splice()</code> eliminará todos los elementos desde el índice <code>inicial</code> hasta el final del arreglo.</p><h2 id="c-mo-eliminar-y-a-adir-elementos-de-un-arreglo-con-splice-">Cómo eliminar y añadir elementos de un arreglo con splice()</h2><p>El método también permite añadir nuevos elementos justo después de la operación de borrado. Solo tienes que pasar los elementos que quieres añadir al arreglo después de la cuenta de borrado.</p><p>La sintaxis completa del método <code>splice()</code> es la siguiente:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">Array.splice(inicio, eliminaConteo, nuevoElemento, nuevoElemento, nuevoElemento, ...)</code></pre><figcaption>Sintaxis completa del método splice()</figcaption></figure><p>El siguiente ejemplo muestra cómo puede eliminar "lunes" y "martes" y añadir "marzo" y "abril" al arreglo de <code>meses</code>:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">let meses = ["enero", "febrero", "lunes", "martes"];
let dias = meses.splice(2, 2, "marzo", "abril");

console.log(dias); // ["lunes", "martes"]
console.log(meses); // ["enero", "febrero", "marzo", "abril"]</code></pre><figcaption>Uso de splice() para eliminar y añadir elementos a un arreglo</figcaption></figure><h2 id="c-mo-a-adir-nuevos-elementos-al-arreglo-sin-eliminar-ninguno">Cómo añadir nuevos elementos al arreglo sin eliminar ninguno</h2><p>Por último, puedes añadir nuevos elementos sin eliminar ninguno pasando el número <code>0</code> al parámetro <code>eliminaConteo</code>. Si no se elimina ningún elemento, el método splice devolverá un arreglo vacío. Puede elegir si desea almacenar el arreglo vacío retornado en una variable o no.</p><p>El siguiente ejemplo muestra cómo se puede añadir un nuevo elemento <code>"marzo"</code> junto a <code>"febrero"</code> sin eliminar ningún elemento. Como el método <code>splice()</code> retorna un arreglo vacío, no es necesario almacenar el arreglo retornado:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">let meses = ["enero", "febrero", "lunes", "martes"];
meses.splice(2, 0, "marzo");

console.log(meses); 
// ["enero", "febrero", "marzo", "abril", "lunes", "martes"]</code></pre><figcaption>El método splice() llamado sin retornar ningún elemento</figcaption></figure><h2 id="conclusi-n">Conclusión</h2><p>Acabas de aprender cómo funciona el método <code>splice()</code>. ¡Buen trabajo!</p><p>El método <code>splice()</code> se utiliza principalmente cuando necesitas eliminar o añadir nuevos elementos a un arreglo. En algunas situaciones, también puedes utilizarlo para separar un arreglo que tiene contenido mixto como en el caso anterior.</p><p>Si eliminas <code>0</code> elementos del arreglo, el método simplemente devolverá un arreglo vacío. Siempre eres libre de asignar el arreglo retornado a una variable o ignorarlo.</p><h2 id="gracias-por-leer-este-tutorial">Gracias por leer este tutorial</h2><p>Si quieres aprender más sobre JavaScript, puedes visitar mi sitio en sebhastian.com, donde he publicado más de <a href="https://sebhastian.com/javascript-tutorials/">100 tutoriales sobre programación con JavaScript</a>.</p><p>Los tutoriales incluyen manipulación de cadenas, manipulación de fechas, métodos de arreglos y objetos, soluciones de algoritmos de JavaScript y mucho más.</p><p>Asegúrate de <a href="https://sebhastian.com/">comprobarlo</a> ? .</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
