<?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[ Jhonathan Izquierdo - 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[ Jhonathan Izquierdo - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Wed, 20 May 2026 09:49:18 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/jhonathan/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Cómo instalar Angular en Windows: una guía sobre Angular CLI, Node.js y Herramientas de compilación ]]>
                </title>
                <description>
                    <![CDATA[ En este tutorial, aprenderemos cómo instalar la interfaz de línea de comandos de Angular (Angular CLI) en el sistema operativo Windows y usarla para crear un nuevo proyecto Angular. ¿Qué es la interfaz de línea de comandos de Angular (Angular CLI)? La Angular CLI es la herramienta oficial para inicializar ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-instalar-angular-en-windows/</link>
                <guid isPermaLink="false">62f1b63bb4def50851977c37</guid>
                
                    <category>
                        <![CDATA[ angular ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jhonathan Izquierdo ]]>
                </dc:creator>
                <pubDate>Fri, 23 Sep 2022 00:37:18 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/08/angular-cli-install.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-install-angular-on-windows-a-guide-to-angular-cli-node-js-and-build-tools/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Install Angular on Windows: A Guide to Angular CLI, Node.js, and Build Tools</a>
      </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/12/angular-cli-install-1.png" class="kg-image" alt="angular-cli-install-1" width="600" height="400" loading="lazy"></figure><p>En este tutorial, aprenderemos cómo instalar la interfaz de línea de comandos de Angular (Angular CLI) en el sistema operativo Windows y usarla para crear un nuevo proyecto Angular.</p><h2 id="-qu-es-la-interfaz-de-l-nea-de-comandos-de-angular-angular-cli-">¿Qué es la interfaz de línea de comandos de Angular (Angular CLI)?</h2><p>La Angular CLI es la herramienta oficial para inicializar y trabajar con proyectos de Angular. Te libra de las molestas configuraciones y herramientas de compilación de TypeScript, Webpack y demás.</p><p>Después de instalar la Angular CLI, necesitará ejecutar un comando para generar un proyecto y otro para correrlo usando un servidor local de desarrollo, con el fin de jugar con tu aplicación.</p><p>Como la mayoría de herramientas modernas para el frontend en la actualidad, la Angular CLI está construida sobre Node.js.</p><p>Node.js es una tecnología del lado del servidor que le permite a los desarrolladores ejecutar código JavaScript en el servidor y compilar aplicaciones web del lado del servidor. Sin embargo, Angular es una tecnología del frontend, por lo que incluso si necesita instalar Node.js en tu máquina de desarrollo, solo es para correr la interfaz de línea de comandos.</p><p>Una vez que compile tu aplicación para producción no necesitará Node.js, ya que el empaquetado final solo son HTML, CSS y JavaScript estáticos que pueden ser servidos por cualquier servidor web o un CDN (Content Delivery Network).</p><p>Dicho esto, si está construyendo una aplicación web full-stack con Angular, podría necesitar Node.js para crear la parte del backend en el caso de que desee usar JavaScript para el frontend y el backend.</p><p>Revise la MEAN Stack - es una arquitectura que incluye Mongo DB, Express (un servidor web y plataforma para API REST construida sobre Node.js) y Angular. Puede leer artículos en internet si quisiera un tutorial paso a paso para empezar con este stack.</p><p><a href="https://www.techiediaries.com/angular-9-8-mean-stack-authentication-tutorial-and-example-with-node-and-mongodb/">E</a>n este caso, Node.js es usado para compilar el backend de tu aplicación y puede ser reemplazado por cualquier tecnología del lado del servidor que desee, como PHP, Ruby o Python. Pero Angular no depende de Node.js excepto por tu interfaz de línea de comandos (CLI) y para la instalación de paquetes con npm.</p><p>NPM se describe por Node Package Manager (Gestor de Paquetes para Node). Es un registro que hospeda los paquetes para Node y en los años recientes también ha sido usado para publicar paquetes y librerías para en frontend tales como Angular, React, vue.js e inclusive Bootstrap.</p><h2 id="instalar-angular-cli-en-windows">Instalar Angular CLI en Windows</h2><p>Primero, necesita tener instalado Node.js y npm en tu máquina de desarrollo.</p><p>Hay varias maneras de hacerlo tales como:</p><ul><li>Usar NVM (Node Version Manager) para instalar y trabajar con múltiples versiones de node en tu sistema.</li><li>Usar el manejador de paquetes oficial de tu sistema operativo.</li><li>Instalarlo desde la página web oficial.</li></ul><p>Para hacerlo sencillo usemos el sitio web oficial. Simplemente, visite la <a href="https://nodejs.org/es/download/">página de descargas</a> y descargue los binarios para Windows, luego siga las instrucciones del asistente de instalación.</p><p>Puede asegurarse de que Node se encuentra instalado en tu sistema ejecutando el siguiente comando en la interfaz de línea de comandos o terminal, la cual debería mostrar la versión de Node instalada:</p><pre><code class="language-bash">$ node -v
</code></pre><p>Continuando, ejecute el siguiente comando para instalar la Angular CLI:</p><pre><code class="language-bash">$ npm install @angular/cli
</code></pre><p>Después de que el comando termine de ejecutarse exitosamente, debería tener la Angular CLI instalada.</p><h2 id="una-gu-a-r-pida-sobre-la-angular-cli">Una Guía Rápida sobre la Angular CLI</h2><p>Después de instalar la Angular CLI, puede ejecutar muchos comandos. Empecemos por chequear la versión de la CLI instalada:</p><pre><code class="language-bash">$ ng version
</code></pre><p>Un segundo comando que podría necesitar ejecutar es el comando <code>help</code> para obtener una guía de ayuda completa:</p><pre><code class="language-bash">$ ng help
</code></pre><p>La CLI provee los siguientes comandos: </p><p><code>add</code>: Agrega soporte para una librería externa en tu proyecto.</p><p><code>build (b)</code>: Compila una aplicación de Angular en un directorio de salida llamado &nbsp;<code>dist/</code> en la ruta dada. Debe ser ejecutado dentro del un directorio que contenga un espacio de trabajo.</p><p><code>config</code>: Retorna o establece valores de configuración para Angular.</p><p><code>doc (d)</code>: Abre la documentación oficial en el navegador (<a href="https://angular.io/">angular.io</a>) y busca por un término dado.</p><p><code>e2e (e)</code>: Compila y sirve una aplicación Angular, luego ejecuta pruebas end-to-end usando Protractor.</p><p><code>generate (g)</code>: Genera y/o modifica archivos basándose en un esquema.</p><p><code>help</code>: Lista los comandos disponibles y una descripción corta sobre ellos.</p><p><code>lint (l)</code>: Corre las herramientas de formato de código en la aplicación de Angular en una carpeta definida.</p><p><code>new (n)</code>: Crea un nuevo espacio de trabajo e inicializa una nueva aplicación Angular.</p><p><code>run</code>: Ejecuta un comando personalizado definido en tu proyecto.</p><p><code>serve (s)</code>: Compila y sirve la aplicación, recompilando cuando hay cambios en archivos.</p><p><code>test (t)</code>: Ejecuta las pruebas unitarias en un proyecto.</p><p><code>update</code>: Actualiza tu aplicación y sus dependencias. Vea <a href="https://update.angular.io/">https://update.angular.io/</a> para más referencias.</p><p><code>version (v)</code>: Muestra la versión de la interfaz de línea de comandos de Angular.</p><p><code>xi18n</code>: Extrae los mensajes de localización (i18n) del código fuente.</p><h2 id="generar-un-proyecto-">Generar un Proyecto.</h2><p>Puede usar la Angular CLI para generar rápidamente un nuevo proyecto Angular mediante la ejecución del siguiente comando:</p><pre><code class="language-bash">$ ng new frontend

</code></pre><p><em>Nota:</em><strong> frontend</strong> es el nombre del proyecto<em>. Puede, por supuesto, escoger cualquier nombre válido para tu proyecto. Como crearemos una aplicación full-stack estoy usando </em>frontend <em>como nombre para la aplicación frontend</em>.</p><p>Como mencioné antes, la CLI preguntará si desea añadir enrutamiento a la aplicación, para lo cual puede responder <code>y</code> (Yes- Sí) o <code>n</code> (No) que es la opción por defecto. También se le preguntará acerca del formato de hoja de estilos que quiere usar (como CSS). Escoge tu opción preferida y presione <code>Enter</code> para continuar.</p><p>Después lo realizado tendrá tu proyecto creado con una estructura de directorios y un conjunto de configuraciones y archivos de código. Estos serán la mayoría en formato TypeScript y JSON. Veamos el papel de cada archivo:</p><ul><li><code>/e2e/</code>: contiene los test end-to-end (simulan el comportamiento de un usuario) para el sitio web</li><li><code>/node_modules/</code>: todas las librerías de terceros son instaladas en esta carpeta usando el comando <code>npm install</code></li><li><code>/src/</code>: contiene el código fuente de la aplicación. La mayoría del trabajo se realiza aquí</li><li><code>/app/</code>: contiene módulos y componentes</li><li><code>/assets/</code>: contiene recursos estáticos como imágenes, íconos y estilos</li><li><code>/environments/</code>: contiene configuraciones específicas de ambiente (como producción y/o desarrollo)</li><li><code>browserslist</code>: necesario para el soporte CSS para el autoprefixer</li><li><code>favicon.ico</code>: el archivo para el favicon</li><li><code>index.html</code>: el archivo HTML principal</li><li><code>karma.conf.js</code>: archivo de configuración de Karma (herramienta de prueba)</li><li><code>main.ts</code>: el archivo de inicio principal desde donde se carga el <em>AppModule</em> </li><li><code>polyfills.ts</code>: polyfills (fragmento de código que se utiliza para proporcionar una funcionalidad moderna en navegadores antiguos que no lo admiten de forma nativa) requeridos por Angular</li><li><code>styles.css</code>: la hoja de estilos global para el proyecto</li><li><code>test.ts</code>: es un archivo de configuración para Karma</li><li><code>tsconfig.*.json</code>: archivos de configuración para TypeScript</li><li><code>angular.json</code>: contiene las configuraciones para la línea de comandos de Angular</li><li><code>package.json</code>: contiene la información básica del proyecto (nombre, descripción y dependencias)</li><li><code>README.md</code>: un archivo markdown que contiene una descripción del proyecto </li><li><code>tsconfig.json</code>: archivo de configuración para TypeScript</li><li><code>tslint.json</code>: archivos de configuración para TSlint (una herramienta de análisis estático de código)</li></ul><h2 id="sirviendo-el-proyecto">Sirviendo el Proyecto</h2><p>La línea de comandos de Angular provee una cadena de herramientas de desarrollo completa para aplicaciones front-end en tu máquina local. Como tal, no necesita instalar un servidor web local para servir tu proyecto, únicamente ejecutar el comando <code>ng serve</code> desde tu terminal para servir tu proyecto localmente.</p><p>Primero, navegue a la carpeta de tu proyecto en la terminal ejecutando los comandos:</p><pre><code class="language-bash">$ cd frontend
$ ng serve

</code></pre><p>Ahora puede navegar a la dirección <a href="http://localhost:4200/">http://localhost:4200/</a> para comenzar a jugar con tu aplicación front-end. La página se actualizará en vivo automáticamente cada vez que usted haga cambios en el código.</p><h2 id="generar-artefactos-de-una-app-angular">Generar Artefactos de una App Angular</h2><p>La línea de comandos angular provee el comando, <code>ng generate</code> el cual ayuda a los desarrolladores a generar artefactos básicos de Angular tales como módulos, componentes, directivas, pipes, y servicios:</p><pre><code class="language-bash">$ ng generate component mi-componente
</code></pre><p><code>mi-componente</code> es el nombre del componente a crear. La Angular LCI automáticamente añadirá una referencia a <code>components</code>, <code>directives</code> y<code>pipes</code> en el archivo <code>src/app.module.ts</code>.</p><p>Si quiere añadir tu componente, directiva or pipe a otro módulo (otro diferente al módulo de aplicación principal, <code>app.module.ts</code>), simplemente puede agregar el prefijo con el nombre del módulo y un slash:</p><pre><code class="language-bash">$ ng g component mi-modulo/mi-componente
</code></pre><p><code>mi-modulo</code> es el nombre de un módulo existente.</p><h2 id="conclusi-n">Conclusión</h2><p>En este tutorial, hemos visto cómo instalar la interfaz de línea de comandos (CLI) de Angular en tu máquina Windows, la cual hemos usado para inicializar un nuevo proyecto Angular desde cero.</p><p>También hemos visto varios comandos que puede usar a través del desarrollo de tu proyecto para generar artefactos, tales como módulos, componentes y servicios.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Span HTML: Cómo usar la etiqueta Span con CSS ]]>
                </title>
                <description>
                    <![CDATA[ Se puede usar la etiqueta HTML span como contenedor para agrupar elementos en la misma línea y así poder darles estilos o manipularlos con JavaScript. En este artículo, Le mostraré como usar esta etiqueta para hacer que una cierta parte del contenido sea distinta del resto. Luego usted podrá comenzar ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/span-html-como-usar-la-etiqueta-span-con-css/</link>
                <guid isPermaLink="false">62dc576db4def508519741d6</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jhonathan Izquierdo ]]>
                </dc:creator>
                <pubDate>Tue, 26 Jul 2022 02:19:06 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/07/span-tag.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/span-html-how-to-use-the-span-tag-with-css/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Span HTML – How to Use the Span Tag with CSS</a>
      </p><p>Se puede usar la etiqueta HTML <code>span</code> como contenedor para agrupar elementos en la misma línea y así poder darles estilos o manipularlos con JavaScript.</p><p>En este artículo, Le mostraré como usar esta etiqueta para hacer que una cierta parte del contenido sea distinta del resto. Luego usted podrá comenzar a usarlo en sus proyectos de codificación.</p><h2 id="-para-qu-se-usa-la-etiqueta-span">¿Para qué se usa la etiqueta <code>span</code>?</h2><p>Esta etiqueta se comporta igual que un <code>div</code>, el cual es usado para agrupar contenido similar, así puede darles estilos a todo junto.</p><p>Pero <code>span</code> se diferencia en que es un elemento en línea, en contraposición a <code>div</code>, que es un elemento de bloque.</p><p>Además, tenga en cuenta que <code>span</code> en sí misma no tiene ningún efecto en su contenido, a menos que tú le des estilos.</p><p>Hay dos usos principales de la etiqueta <code>span</code>: dar estilo y manipular un texto en particular con JavaScript.</p><h3 id="c-mo-dar-estilos-al-texto-con-la-etiqueta-span">Cómo dar estilos al texto con la etiqueta <code>span</code></h3><p>Si deseas que un texto en particular o algún otro contenido sea diferente del resto, puedes envolver este contenido en un <code>span</code>, darle un atributo de clase y entonces seleccionarlo con el valor del atributo para darle estilos.</p><p>En los siguientes ejemplos, se puede cambiar el <code>color</code>, <code>background-color</code> y <code>font-style</code> de algún texto encerrándolo en una etiqueta <code>span</code>.</p><h4 id="c-mo-cambiar-el-color-del-texto">Cómo cambiar el color del texto</h4><pre><code class="language-html">&lt;p&gt;Este es un &lt;span class="texto-carmesi"&gt;texto carmesí&lt;/span&gt; dentro de otros.&lt;/p&gt;
</code></pre><pre><code class="language-css">.texto-carmesi {
      color: crimson;
}
</code></pre><p>He añadido un poco de CSS básico para centrar todo en la página:</p><pre><code class="language-css">body {
        display: flex;
        align-items: center;
        justify-content: center;
        margin: 0 auto;
        height: 100vh;
      }
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/07/image-43.png" class="kg-image" alt="image-43" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/07/image-43.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/07/image-43.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2022/07/image-43.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2022/07/image-43.png 1828w" sizes="(min-width: 720px) 720px" width="1828" height="906" loading="lazy"><figcaption>Texto con estilos dentro de una etiqueta <code>span</code></figcaption></figure><h4 id="c-mo-cambiar-el-color-del-fondo">Cómo cambiar el color del fondo</h4><pre><code class="language-html">&lt;p&gt;
      Un &lt;span class="fondo-verde"&gt;color de fondo verde&lt;/span&gt; recuerda perfectamente la belleza de la naturaleza.
&lt;/p&gt;
</code></pre><pre><code class="language-css"> .fondo-verde {
        background-color: #2ecc71;
      }
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/07/image-45.png" class="kg-image" alt="image-45" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/07/image-45.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/07/image-45.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2022/07/image-45.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2022/07/image-45.png 1769w" sizes="(min-width: 720px) 720px" width="1769" height="831" loading="lazy"><figcaption>Color de fondo verde aplicado a un texto usando <code>span</code></figcaption></figure><h3 id="c-mo-cambiar-el-estilo-de-la-fuente">Cómo cambiar el estilo de la fuente</h3><pre><code class="language-html">&lt;p&gt;
   Un estilo de fuente &lt;span class="estilo-fuente"&gt;en cursiva&lt;/span&gt; puede ser usado para dar énfasis a un texto.
&lt;/p&gt;
</code></pre><pre><code>.estilo-fuente {
     font-style: italic;
   }</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/07/image-50.png" class="kg-image" alt="image-50" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/07/image-50.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/07/image-50.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2022/07/image-50.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2022/07/image-50.png 1674w" sizes="(min-width: 720px) 720px" width="1674" height="635" loading="lazy"><figcaption>Estilo de fuente cursiva</figcaption></figure><h3 id="c-mo-manipular-la-etiqueta-span-con-javascript">Cómo manipular la etiqueta <code>span</code> con JavaScript</h3><p>Al igual que es posible dar estilo al contenido envolviéndolo en una etiqueta <code>span</code>, también puedes manipular su contenido de la misma manera. Debes darle un atributo <code>id</code> y seleccionarlo por su id con JavaScript de tal forma que pueda ser manipulado.</p><p>En el ejemplo siguiente, he cambiado un texto dentro de otro a mayúsculas con JavaScript:</p><pre><code class="language-html">&lt;p&gt;
   El texto &lt;span id="mayusculas"&gt; freecodecamp&lt;/span&gt;, fue cambiado a mayúsculas con JavaScript
&lt;/p&gt;</code></pre><pre><code class="language-js">const mayusculas = document.querySelector("#mayusculas");

mayusculas.style.textTransform = "uppercase";</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/07/image-51.png" class="kg-image" alt="image-51" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/07/image-51.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2022/07/image-51.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2022/07/image-51.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2022/07/image-51.png 1650w" sizes="(min-width: 720px) 720px" width="1650" height="568" loading="lazy"><figcaption>Texto cambiado a mayúsculas</figcaption></figure><h2 id="conclusi-n">Conclusión</h2><p>En este tutorial, has aprendido cómo manipular una pieza particular de texto con CSS y JavaScript, envolviéndolo en una etiqueta <code>span</code> y dándole un atributo <code>class</code> o <code>id</code> único.</p><p>Debes notar que en casos como este, debes usar clases para el estilo e identificadores (id) para la manipulación con JavaScript con el objetivo de evitar confusiones.</p><p>Gracias por leer y sigue programando.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Arreglos vs. desestructuración de objetos en JavaScript: ¿Cuál es la diferencia? ]]>
                </title>
                <description>
                    <![CDATA[ La asignación mediante desestructuración en JavaScript provee una forma ordenada y limpia de extraer valores de nuestros arreglos y objetos. Este artículo pretende mostrar, exactamente, cómo funciona en JavaScript la asignación mediante desestructuración de arreglos y objetos. Así que sin más preámbulos, comencemos con la desestructuración de arreglos. ¿Qué es ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/arreglos-vs-desestructuracion-de-objectos-en-javascript/</link>
                <guid isPermaLink="false">62be30f8c5b22c08edf8cd71</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jhonathan Izquierdo ]]>
                </dc:creator>
                <pubDate>Mon, 18 Jul 2022 03:26:37 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/06/extract-777603_1920-Image-by-Oscar-Castillo-from-Pixabay.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/array-vs-object-destructuring-in-javascript/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Array vs Object Destructuring in JavaScript – What’s the Difference?</a>
      </p><p>La asignación mediante desestructuración en JavaScript provee una forma ordenada y limpia de extraer valores de nuestros arreglos y objetos.</p><p>Este artículo pretende mostrar, exactamente, cómo funciona en JavaScript la asignación mediante desestructuración de arreglos y objetos.</p><p>Así que sin más preámbulos, comencemos con la desestructuración de arreglos.</p><h2 id="-qu-es-la-desestructuraci-n-de-arreglos">¿Qué es la desestructuración de arreglos?</h2><p>La <strong>desestructuración de arreglos</strong> es una técnica única que permite extraer limpiamente valores de un arreglo y asignarlos a nuevas variables.</p><p>Por ejemplo, sin usar la técnica de asignación mediante desestructuración, se podría copiar un valor de un arreglo en una nueva variable de la siguiente manera:</p><pre><code class="language-js">const perfil = ["Oluwatobi", "Sofela", "codesweetly.com"];

const nombre = perfil[0];
const apellido = perfil[1];
const sitioWeb = perfil[2];

console.log(nombre); // "Oluwatobi"
console.log(apellido); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-mrqjsu?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>Se debe notar que el fragmento de abajo tiene bastante código repetido que no cumple con el principio de programación DRY (<strong>D</strong>on’t <strong>R</strong>epeat <strong>Y</strong>ourself - No Te Repitas).</p><p>Veamos ahora cómo la desestructuración de arreglos hace todo más limpio y adherido al principio DRY.</p><pre><code class="language-js">const perfil = ["Oluwatobi", "Sofela", "codesweetly.com"];

const [nombre, apellido, sitioWeb] = perfil;

console.log(nombre); // "Oluwatobi"
console.log(apellido); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-uxrjek?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>Se puede ver, como por arte de magia, se ha limpiado el código colocando las tres nuevas variables (es decir, <code>nombre</code>, <code>apellido</code>y <code>sitioWeb</code>) en un arreglo (<code>[...]</code>). Y a continuación, se asignaron los valores del arreglo <code>perfil</code>.</p><p>En otras palabras, se instruyó a la computadora para que extraiga los valores del arreglo <code>perfil</code> y los asigne en las variables al lado izquierdo del <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/Assignment">operador de asignación</a>.</p><p>Por lo tanto, JavaScript analizará el arreglo <code>perfil</code> y copiará su primer valor (<code>"Oluwatobi"</code>) el la primera variable (<code>nombre</code>) del arreglo de desestructuración.</p><p>Así mismo, la computadora extraerá el segundo valor del arreglo <code>perfil</code> y lo asignará a la segunda variable (<code>apellido</code>) del arreglo de desestructuración.</p><p>Por último, JavaScript copiará el tercer valor del arreglo <code>perfil</code> y lo asignará a la tercera variable (<code>sitioWeb</code>) del arreglo de desestructuración.</p><p>Observa que el fragmento de código de arriba ha desestructurado el arreglo <code>perfil</code> referenciándolo. Sin embargo, también es posible hacerlo directamente desestructurándolo de un arreglo. Veamos cómo.</p><h3 id="c-mo-hacer-desestructuraci-n-directa-de-un-arreglo">Cómo hacer desestructuración directa de un arreglo</h3><p>JavaScript permite desestructurar un arreglo directamente de la siguiente forma:</p><pre><code class="language-js">const [nombre, apellido, sitioWeb] = [
  "Oluwatobi", 
  "Sofela", 
  "codesweetly.com"
];

console.log(nombre); // "Oluwatobi"
console.log(apellido); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-rndtx5?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>Supon que prefieres separar las declaraciones de variables de sus asignaciones. En ese caso, JavaScript lo tiene cubierto. Veamos cómo.</p><h3 id="c-mo-usar-desestructuraci-n-de-arreglos-mientras-separa-la-declaraci-n-de-las-variables-de-su-asignaci-n">Cómo usar desestructuración de arreglos mientras separa la declaración de las variables de su asignación</h3><p>Siempre que uses desestructuración de arreglos, JavaScript permite separa la declaración de las variables de su asignación.</p><p><strong>Aquí un ejemplo:</strong></p><pre><code class="language-js">let nombre, apellido, sitioWeb;

[nombre, apellido, sitioWeb] = ["Oluwatobi", "Sofela", "codesweetly.com"];

console.log(nombre); // "Oluwatobi"
console.log(apellido); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-nm1ng3?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>¿Qué tal si quisieras que <code>"Oluwatobi"</code> sea asignado a la variable <code>nombre</code> y el resto de los elementos del arreglo a otra variable? ¿Cómo lo haría? Averigüémoslo a continuación.</p><h3 id="c-mo-usar-desestructuraci-n-de-arreglos-para-asignar-el-resto-de-un-arreglo-a-una-variable">Cómo usar desestructuración de arreglos para asignar el resto de un arreglo a una variable</h3><p>JavaScript permite usar el <a href="https://www.freecodecamp.org/espanol/news/operadores-rest-spread-de-javascript-cual-es-la-diferencia/">operador rest</a> dentro de un arreglo de desestructuración para asignar el resto de un arreglo normal a una variable.</p><p><strong>Aquí un ejemplo:</strong></p><pre><code class="language-js">const [nombre, ...otraInformacion] = ["Oluwatobi", "Sofela", "codesweetly.com"];

console.log(nombre); // "Oluwatobi"
console.log(otraInformacion); // ["Sofela", "codesweetly.com"]</code></pre><p><a href="https://stackblitz.com/edit/web-platform-w15axc?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p><strong>Nota:</strong> Siempre usa el operador rest como el último elemento del arreglo de desestructuración para evitar un error de sintaxis (<code>SyntaxError</code>).</p><p>Ahora, ¿Si sólo quisiera extraer <code>"codesweetly.com"</code> ? Discutamos la técnica a usar a continuación.</p><h3 id="c-mo-usar-desestructuraci-n-de-arreglos-para-extraer-valores-a-cualquier-ndice">Cómo usar desestructuración de arreglos para extraer valores a cualquier índice</h3><p>Aquí se muestra cómo puede usar desestructuración de arreglos para extraer valores en cualquier índice de un arreglo normal:</p><pre><code class="language-js">const [, , sitioWeb] = ["Oluwatobi", "Sofela", "codesweetly.com"];

console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-311nkt?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el fragmento de código de arriba, se usaron comas para omiti las variables en la primera y segunda posición del arreglo de desestructuración.</p><p>Al hacer esto, es posible enlazar la variable <code>sitioWeb</code> a el tercer índice del arreglo normal al lado derecho del operador de asignación (es decir, <code>"codesweetly.com"</code>).</p><p>Sin embargo, a veces el valor que se desea extraer de un arreglo es <code>undefined</code>. En ese caso, JavaScript provee una forma de establecer valores por defecto en el arreglo de desestructuración. Veamos más acerca de ello a continuación.</p><h3 id="c-mo-funcionan-los-valores-por-defecto-en-una-asignaci-n-mediante-desestructuraci-n-de-arreglos">Cómo funcionan los valores por defecto en una asignación mediante desestructuración de arreglos</h3><p>Establecer un valor por defecto puede ser útil cuando el valor que se desea extraer de un arreglo no existe (o está como <code>undefined</code>).</p><p>Aquí se muestra cómo se puede establecer un valor por defecto en un arreglo de desestructuración:</p><pre><code class="language-js">const [nombre = "Tobi", sitioWeb = "CodeSweetly"] = ["Oluwatobi"];

console.log(nombre); // "Oluwatobi"
console.log(sitioWeb); // "CodeSweetly"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-r38k67?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el ejemplo de arriba, se estableció <code>"Tobi"</code> y <code>"CodeSweetly"</code> como los valores por defecto de las variables <code>nombre</code> y <code>sitioWeb</code>.</p><p>Por lo tanto, en el intento de extracción del primer valor del indice del arreglo del lado derecho, la computadora tomó el valor por defecto <code>"CodeSweetly"</code> debido a que en el arreglo <code>["Oluwatobi"]</code> sólo existe un valor de índice cero.</p><p>Entonces, ¿si quisieras intercambiar el valor de <code>nombre</code> &nbsp;por el de <code>sitioWeb</code>? De nuevo, es posible usar desestructuración de arreglos para hacer el trabajo. Veamos cómo.</p><h3 id="c-mo-usar-desestructuraci-n-de-arreglos-para-intercambiar-valores-entre-variables">Cómo usar desestructuración de arreglos para intercambiar valores entre variables</h3><p>Puedes usar la asignación mediante desestructuración de arreglos para intercambiar valores de dos o más variables diferentes.</p><p><strong>Un ejemplo a continuación:</strong></p><pre><code class="language-js">let nombre = "Oluwatobi";
let sitioWeb = "CodeSweetly";

[nombrenombre, sitioWeb] = [sitioWeb, nombre];

console.log(nombre); // "CodeSweetly"
console.log(sitioWeb); // "Oluwatobi"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-fu7phn?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el ejemplo de arriba,, se usó desestructuración de arreglos directa para reasignar las variables <code>nombre</code> y <code>sitioWeb</code> por los valores del arreglo del lado derecho del operador de asignación.</p><p>Debido a ello, el valor de <code>nombre</code> cambiará de <code>"Oluwatobi"</code> a <code>"CodeSweetly"</code>. Mientras que el contenido de <code>sitioWeb</code> cambiará de <code>"CodeSweetly"</code> a <code>"Oluwatobi"</code>.</p><p>Ten en cuenta que también puede usar ésta técnica para extraer valores de un arreglo normal a parámetros de funciones. Hablemos de ello más abajo.</p><h3 id="c-mo-usar-desestructuraci-n-de-arreglos-para-extraer-valores-de-un-arreglo-como-par-metros-de-una-funci-n">Cómo usar desestructuración de arreglos para extraer valores de un arreglo como parámetros de una función</h3><p>Aquí se muestra como se puede usar la desestructuración para extraer un valor de un arreglo como parámetro de una función.‌</p><pre><code class="language-js">// Definir un arreglo con dos elementos:
const perfil = ["Oluwatobi", "Sofela"];

// Definir una función con un arreglo desestructurado conteniendo dos parámetros:
function obtenerInfoUsuario([nombre, apellido]) {
  return `Mi nombre es ${nombre} ${apellido}.`;
}

// Invocar el método obtenerInfoUsuario mientras se le pasa el arreglo perfil como argumento:
obtenerInfoUsuario(perfil);

// La invocación anterior retornará lo siguiente:
"Mi nombre es Oluwatobi Sofela."</code></pre><p><a href="https://stackblitz.com/edit/web-platform-ckdkjb?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el fragmento de código anterior, se usa un arreglo de desestructuración como parámetro para extraer los valores del arreglo <code>perfil</code> y pasar los parámetros <code>nombre</code> y <code>apellido</code> a la función <code>obtenerInfoUsuario</code>.</p><p><strong>Nota:</strong> Un arreglo de desestructuración como parámetro normalmente se conoce como <em>parámetro de desestructuración</em>.</p><p><strong>A continuación otro ejemplo:</strong></p><pre><code class="language-js">// Definir un arreglo con dos valores string y un arreglo anidado:
const perfil = ["codesweetly.com", "Male", ["Oluwatobi", "Sofela"]];

// Definir una función con dos arreglos de desestructuración conteniendo un parámetro cada uno:
function obtenerInfoUsuario([sitioWeb, , [nombreUsuario]]) {
  return `${nombreUsuario} maneja ${sitioWeb}`;
}

// Invoke getUserBio while passing the profile array as an argument:
obtenerInfoUsuario(perfil);

// The invocation above will return:
"Oluwatobi maneja codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-gvzqak?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el fragmento de código anterior, se usan dos arreglos de desestructuración como parámetros para extraer el valor del arreglo <code>perfil</code> y pasar los parámetros <code>sitioWeb</code> y <code>nombreUsuario</code> a la función <code>obtenerInfoUsuario</code>.</p><p>Puede haber ocasiones en que se podría necesitar invocar una función que contiene un parámetro de desestructuración sin pasarle ningún argumento. En ese caso, se necesita usar una técnica que prevenga que el navegador lance un <code>TypeError</code>.</p><p>Veamos acerca de ésta técnica a continuación:</p><h3 id="c-mo-invocar-funciones-que-contienen-par-metros-de-desestructuraci-n-sin-pasarles-alg-n-argumento">Cómo invocar funciones que contienen parámetros de desestructuración sin pasarles algún argumento</h3><p>Considera la siguiente función:</p><pre><code class="language-js">function obtenerInfoUsuario([nombre]) {
  console.log(
    "Hacer algo que no requiere un parámetro de desestructuración."
  );
  return `Mi nombre es ${nombre}.`;
}</code></pre><p>Ahora, se invoca la función <code>obtenerInfoUsuario</code> &nbsp;sin pasar ningún argumento a su parámetro de desestructuración:</p><pre><code class="language-js">obtenerInfoUsuario();</code></pre><p><a href="https://codesandbox.io/s/wrong-way-to-invoke-a-function-containing-an-array-destructuring-parameter-vtdrl"><strong>Probarlo en CodeSandBox</strong></a></p><p>Después de invocar la función arriba, el navegador lanzará un error similar a <code>TypeError: undefined is not iterable</code>.</p><p>Este mensaje se lanza porque las funciones que contienen un parámetro de desestructuración esperan que les sea pasado al menos un argumento.</p><p>Por lo tanto, se puede evitar estos mensajes de error mediante la asignación de un parámetro por defecto al parámetro de desestructuración.</p><p><strong>Aquí un ejemplo:</strong></p><pre><code class="language-js">function obtenerInfoUsuario([nombre] = []) {
  console.log(
    "Hacer algo que no requiere un parámetro de desestructuración."
  );
  return `Mi nombres es ${nombre}.`;
}</code></pre><p>Se debe notar en el fragmento de código anterior que se asignó un arreglo vacío como parámetro de desestructuración por defecto.</p><p>Ahora, si se invoca la función sin pasarle argumentos:</p><pre><code class="language-js">obtenerInfoUsuario();</code></pre><p>La función mostrará como salida:</p><pre><code class="language-js">"Hacer algo que no requiere un parámetro de desestructuración."
"Mi nombre es undefined."</code></pre><p><a href="https://codesandbox.io/s/the-correct-way-to-invoke-a-function-containing-an-array-destructuring-parameter-voo50?file=/src/index.js"><strong>Probarlo en CodeSandBox</strong></a></p><p>Ten en cuenta que no se tiene que usar un arreglo vacío como parámetro de desestructuración por defecto, Puedes usar cualquier otro valor que no sea <code>null</code> o <code>undefined</code>.</p><p>Entonces, ahora que sabemos cómo funcionan los arreglos de desestructuración, veamos la desestructuración de objetos para poder ver cuáles son las diferencias.</p><h2 id="-qu-es-la-desestructuraci-n-de-objetos-en-javascript">¿Qué es la desestructuración de objetos en JavaScript?</h2><p><strong>La desestructuración de objetos</strong> es una técnica que permite extraer limpiamente valores de un objeto hacia nuevas variables.</p><p>Por ejemplo, sin usar esta técnica, se puede extraer un valor de un objeto en una nueva variable como se muestra aquí:</p><pre><code class="language-js">const perfil = {
  nombre: "Oluwatobi", 
  apellido: "Sofela", 
  sitioWeb: "codesweetly.com"
};

const nombre = profile.firstName;
const apellido = profile.lastName;
const sitioWeb = profile.website;

console.log(nombre); // "Oluwatobi"
console.log(apellido); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-3tyjgy?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>Se debe notar que el fragmento de código anterior tiene mucho código repetido que no cumple con el principio de codificación DRY (<strong>D</strong>on’t <strong>R</strong>epeat <strong>Y</strong>ourself - No Te Repitas).</p><p>Veamos cómo la desestructuración hace todo más limpio y DRY.</p><pre><code class="language-js">const perfil = {
  nombre: "Oluwatobi", 
  apellido: "Sofela", 
  sitioWeb: "codesweetly.com"
};

const { nombre: nombre, apellido: apellido, sitioWeb: sitioWeb } = perfil;

console.log(nombre); // "Oluwatobi"
console.log(apellido); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-begth4?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>Como se puede ver, como por arte de magia, se ha limpiado el código trasladando las tres nuevas variables a propiedades de objeto (<code>{...}</code>) y asignándolas a los valores del objeto <code>perfil</code>.</p><p>En otras palabras, se ha instruido a la computadora para que extraiga los valores del objeto <code>perfil</code> &nbsp;a las variables en el lado izquierdo del <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/Assignment">operador de asignación</a>.</p><p>Por lo tanto, JavaScript analizará el objeto <code>perfil</code> &nbsp;y copiará el primer valor (<code>"Oluwatobi"</code>) en la primera variable del objeto de desestructuración (<code>firstName</code>).</p><p>De la misma forma, la computadora extraerá el segundo valor (<code>"Sofela"</code>) del objeto <code>perfil</code> en la segunda variable del objeto de desestructuración (<code>lastName</code>).</p><p>Por último, JavaScript copiará el tercer valor (<code>"codesweetly.com"</code>) &nbsp;del objeto <code>perfil</code> en la tercera variable del objeto de desestructuración (<code>website</code>).</p><p>Se debe tener en cuenta que en <code>{ nombre: nombre, apellido: apellido, sitioWeb: sitioWeb}</code>, las claves son referencias a las propiedades del objeto <code>perfil</code>, mientras que los valores de las claves representan las nuevas variables.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/11/destructuring-object-anatomy-codesweetly.png" class="kg-image" alt="Anatomy of a JavaScript object destructuring assignment" width="600" height="400" loading="lazy"><figcaption>La anatomía de una asignación por desestructuración de objeto en JavaScript</figcaption></figure><p>Alternativamente, se puede usar una sintaxis abreviada para hacer el código más legible.</p><p><strong>He aquí un ejemplo:</strong></p><pre><code class="language-js">const perfil = {
  nombre: "Oluwatobi", 
  apellido: "Sofela", 
  sitioWeb: "codesweetly.com"
};

const { nombre, apellido, sitioWeb } = perfil;

console.log(nombre); // "Oluwatobi"
console.log(apellido); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-4nhtlt?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el fragmento de código anterior, se ha acortado <code>{ nombre: nombre, apellido: apellido, sitioWeb: sitioWeb}</code> a <code>{ nombre, apellido, sitioWeb}</code>. </p><p>Observa que el ejemplo anterior ilustra como asignar un valor de un objeto a una variable cuando la propiedad del objeto y la variable tienen el mismo nombre.</p><p>Sin embargo, siempre se puede asignar un valor de una propiedad a una variable con nombre diferente, veamos cómo.</p><h3 id="c-mo-usar-desestructuraci-n-de-objetos-cuando-el-nombre-de-la-propiedad-es-diferente-del-nombre-de-la-variable">Cómo usar desestructuración de objetos cuando el nombre de la propiedad es diferente del nombre de la variable</h3><p>JavaScript permite usar desestructuración de objetos para extraer el valor de una propiedad a una variable, incluso cuando los valores de cada uno (propiedad y variable) son diferentes.</p><p><strong>Aquí un ejemplo:</strong></p><pre><code class="language-js">const perfil = {
  nombre: "Oluwatobi", 
  apellido: "Sofela", 
  sitioWeb: "codesweetly.com"
};

const { nombre: primerNombre, apellido: nombreFamiliar, sitioWeb: paginaWeb } = perfil;

console.log(primerNombre); // "Oluwatobi"
console.log(nombreFamiliar); // "Sofela"
console.log(paginaWeb); // "codesweetly.com"
console.log(sitioWeb); // "ReferenceError: website is not defined"</code></pre><p><strong><a href="https://codesandbox.io/s/how-to-use-object-destructuring-when-the-propertys-name-differs-from-that-of-the-variable-ppohh?file=/src/index.js">Probarlo en CodeSandBox</a></strong></p><p>En el ejemplo anterior, la computadora extrajo con éxito los valores del objeto <code>perfil</code> y los asignó a las variables nombradas <code>primerNombre</code>, <code>nombreFamiliar</code> y <code>paginaWeb</code> aunque los nombres de las propiedades y variables son diferentes.</p><p><strong>Nota:</strong> <code>const { nombre: primerNombre } = perfil</code> es equivalente a <code>const primerNombre = perfil.nombre</code>.</p><p><strong>Otro ejemplo a continuación:</strong></p><pre><code class="language-js">const perfil = {
  apellido: { nombreFamiliar: "Sofela" }
};

const { apellido: { nombreFamiliar: nombreDeFamilia } } = perfil;

console.log(nombreDeFamilia); // "Sofela"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-nbnqcl?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el ejemplo anterior, la computadora extrajo con éxito los valores del objeto <code>perfil</code> y los asignó a las variables nombradas, <code>nombreDeFamilia</code> aunque los nombres de las propiedades y variables son diferentes.</p><p><strong>Nota: </strong><code>const { apellido: { nombreFamiliar: nombreDeFamilia } } = perfil</code> is equivalent to <code>const snombreDeFamilia = profile.apellido.nombreFamiliar</code>.</p><p>Es de notar que hasta ahora se ha desestructurado el objeto <code>profile</code> mediante su referenciación. Sin embargo también se puede hacer la desestructuración de forma directa. Veamos cómo.</p><h3 id="c-mo-hacer-desestructuraci-n-directa-de-objetos">Cómo hacer desestructuración directa de objetos</h3><p>JavaScript permite hacer desestructuración directa de las propiedades de unos objetos de la siguiente forma:</p><pre><code class="language-js">const { nombre, apellido, sitioWeb } = {
  nombre: "Oluwatobi", 
  apellido: "Sofela", 
  sitioWeb: "codesweetly.com"
};

console.log(nombre); // "Oluwatobi"
console.log(apellido); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-vspaeg?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>Supon que prefieres separar la declaración de la variable de sus asignaciones, en tal caso; JavaScript también lo permite. Veamos cómo.</p><h3 id="c-mo-usar-desestructuraci-n-de-objetos-mientras-se-para-la-declaraci-n-de-variables-de-sus-asignaciones">Cómo usar desestructuración de objetos mientras se para la declaración de variables de sus asignaciones</h3><p>Siempre que se use desestructuración de objetos, JavaScript permite separar las declaraciones de variables de sus asignaciones.</p><p>Un ejemplo a continuación:</p><pre><code class="language-js">// Declare three variables:
let nombre, apellido, sitioWeb;

// Extract values to the three variables above:
({ nombre, apellido, sitioWeb } = {
  nombre: "Oluwatobi", 
  apellido: "Sofela", 
  sitioWeb: "codesweetly.com"
});

// Invoke the three variables:
console.log(nombre); // "Oluwatobi"
console.log(lastName); // "Sofela"
console.log(sitioWeb); // "codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-3fmanq?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p><strong>Nota:</strong></p><ul><li>Hay que asegurarse de encajar la asignación de la desestructuración del objeto en paréntesis. Mediante esto, la máquina sabrá que el objeto desestructurado es un objeto literal en vez de un bloque.</li><li>Pon punto y coma (<code>;</code>) después del paréntesis de una asignación por desestructuración de objeto. Así, se previene que la computadora interprete el paréntesis como un invocador de una función que puede estar en la línea anterior.</li></ul><p>¿Y si se quisiera asignar <code>"Oluwatobi"</code> a la variable <code>nombre</code> y el resto de objetos a otra variable? ¿Cómo se puede hacer esto? Averigüemos cómo.</p><h3 id="como-usar-desestructuraci-n-de-objetos-para-asignar-el-resto-de-un-objeto-a-una-variable-">Como usar desestructuración de objetos para asignar el resto de un objeto a una variable. </h3><p>JavaScript permite usar el <a href="https://www.freecodecamp.org/espanol/news/operadores-rest-spread-de-javascript-cual-es-la-diferencia/">operador rest</a> dentro de un objeto de desestructuración para asignar el resto de un objeto literal a una variable.</p><p><strong>Aquí un ejemplo:</strong></p><pre><code class="language-js">const { firstName, ...otherInfo } = {
  firstName: "Oluwatobi",
  lastName: "Sofela",
  website: "codesweetly.com"
};

console.log(firstName); // "Oluwatobi"
console.log(otherInfo); // {lastName: "Sofela", website: "codesweetly.com"}</code></pre><p><a href="https://stackblitz.com/edit/web-platform-hksus5?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p><strong>Nota:</strong> Siempre use el operador rest como el último elemento de su objeto de desestructuración para evitar un error de sintaxis <code>SyntaxError</code>.</p><p>A veces, el valor que se desea extraer de una propiedad de un objeto es <code>undefined</code>. En este caso, JavaScript provee una vía para establecer un valor por defecto en el objeto de desestructuración. Aprendamos más acerca de esto más abajo.</p><h3 id="como-funcionan-los-valores-por-defecto-en-una-asignaci-n-por-desestructuraci-n-de-objetos-">Como funcionan los valores por defecto en una asignación por desestructuración de objetos.</h3><p>Estableciendo un valor por defecto puede ser útil cuando el valor que se desea extraer de un objeto que no existe (o está establecido como <code>undefined</code>).</p><p>Aquí se muestra como establecer uno dentro de las propiedades de un objeto de desestructuración:</p><pre><code class="language-js">const { nombre = "Tobi", sitioWeb = "CodeSweetly" } = {
  nombre: "Oluwatobi"
};

console.log(nombre); // "Oluwatobi"
console.log(sitioWeb); // "CodeSweetly"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-pnjh9a?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el ejemplo de arriba. se establece <code>"Tobi"</code> y<code>"CodeSweetly"</code> como los valores por defecto de las variables <code>nombre</code> y <code>sitioWeb</code>.</p><p>Por lo tanto, en un intento de extraer el segundo valor de la propiedad del lado derecho del objeto, la computadora retornó el valor por defecto <code>"CodeSweetly"</code> porque sólo existe una única propiedad en <code>{nombre: "Oluwatobi"}</code>.</p><p>Entonces, si se requiere intercambiar el valor de <code>nombre</code> con <code>sitioWeb</code>? Nuevamente, es posible usar la desestructuración para lograrlo, Observemos cómo.</p><h3 id="como-usar-la-desestructuraci-n-para-intercambiar-valores">Como usar la desestructuración para intercambiar valores</h3><p>Se puede usar la asignación por desestructuración de objetos para intercambiar los valores de dos o más diferentes variables.</p><p><strong>Por ejemplo:</strong></p><pre><code class="language-js">let nombre = "Oluwatobi";
let sitioWeb = "CodeSweetly";

({ nombre, sitioWeb } = {nombre: sitioWeb, sitioWeb: nombre});

console.log(nombre); // "CodeSweetly"
console.log(sitioWeb); // "Oluwatobi"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-fmyerw?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>El ejemplo anterior usó la desestructuración para reasignar las variables <code>nombre</code> y <code>sitioWeb</code> con los valores del objeto literal a la derecha del operador de asignación.</p><p>Como tal, el valor de <code>nombre</code> cambiará de <code>"Oluwatobi"</code> a <code>"CodeSweetly"</code>. Mientras el contenido de <code>sitioWeb</code> cambiará de <code>"CodeSweetly"</code> a <code>"Oluwatobi"</code>.</p><p>Ten en cuenta que puedes usar la desestructuración de objetos para extraer valores de los parámetros de función. Vamos a ver cómo hacerlo.</p><h3 id="como-usar-desestructuraci-n-de-objetos-para-extraer-valores-de-las-propiedades-de-los-par-metros-de-una-funci-n">Como usar desestructuración de objetos para extraer valores de las propiedades de los parámetros de una función</h3><p>A continuación se muestra como usar desestructuración para copiar los valores de una propiedad a un parámetro de función:</p><pre><code class="language-js">// Define an object with two properties:
const perfil = {
  nombre: "Oluwatobi",
  apellido: "Sofela",
};

// Define a function with one destructuring object containing two parameters:
function obtenerInfoUsuario({ nombre, apellido }) {
  return `Mi nombre es ${nombre} ${apellido}.`;
}

// Invoke getUserBio while passing the profile object as an argument:
obtenerInfoUsuario(profile);

// The invocation above will return:
"Mi nombre es Oluwatobi Sofela."</code></pre><p><a href="https://stackblitz.com/edit/web-platform-aucght?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el ejemplo anterior, se usa un parámetro como objeto de desestructuración para copiar los valores de <code>obtenerInfoUsuario</code>, <code>nombre</code> y <code>apellido</code>.</p><p><strong>Nota:</strong> Un parámetro de desestructuración de objeto es típicamente llamado un parámetro de desestructuración.</p><p>Ahora otro ejemplo:</p><pre><code class="language-js">// Define an object with three-parent properties:
const perfil = {
  sitioWeb: "codesweetly.com",
  genero: "Male",
  nombreCompleto: {
    nombre: "Oluwatobi",
    apellido: "Sofela"
  }
};

// Define a function with two destructuring objects containing a parameter each:
function obtenerInfoUsuario({ sitioWeb, nombreCompleto: { nombre: nombreUsuario } }) {
  return `${nombreUsuario} runs ${sitioWeb}`;
}

// Invoke getUserBio while passing the profile object as an argument:
obtenerInfoUsuario(perfil);

// The invocation above will return:
"Oluwatobi runs codesweetly.com"</code></pre><p><a href="https://stackblitz.com/edit/web-platform-g2n2a6?file=script.js"><strong>Probarlo en StackBlitz</strong></a></p><p>En el fragmento de código anterior, se usó dos parámetros de desestructuración para copiar los valores del objeto <code>perfil</code> en los parámetros <code>sitioWeb</code> and <code>nombreUsuario</code> de la función <code>obtenerInfoUsuario</code>.</p><p>Hay ocasiones en las que se podría requerir invocar una función conteniendo un parámetro de desestructuración sin pasarle ningún argumento. En ese caso, es posible que se necesite una técnica que prevenga que el navegador lance un error <code>TypeError</code>.</p><p>Veamos cómo se hace a continuación.</p><h3 id="c-mo-invocar-una-funci-n-que-contiene-par-metros-de-desestructuraci-n-sin-proveerle-ning-n-argumento">Cómo invocar una función que contiene parámetros de desestructuración sin proveerle ningún argumento</h3><p>Considera la siguiente función:</p><pre><code class="language-js">function obtenerInfoUsuario({ nombre }) {
  console.log(
    "Haga algo que no necesite el parámetro de desestructuración."
  );
  return `Mi nombre es ${firstName}.`;
}</code></pre><p>Ahora, invoquemos la función sin pasarle ningún argumento a su parámetro:</p><pre><code class="language-js">obtenerInfoUsuario();</code></pre><p><a href="https://codesandbox.io/s/wrong-way-to-invoke-a-function-containing-an-object-destructuring-parameter-c1hdx?file=/src/index.js"><strong>Probarlo en CodeSandBox</strong></a></p><p>Después de invocar la función <code>obtenerInfoUsuario</code> de arriba, el navegador lanzará un error similar a <code>TypeError: (destructured parameter) is undefined</code>.</p><p>El mensaje de error sucede por que las funciones que contienen un parámetro de desestructuración esperan que les sean proveídos al menos un argumento.</p><p>Por esto, se puede evitar éste tipo de errores asignando un parámetro por defecto al parámetro de desestructuración.</p><pre><code class="language-js">function obtenerInfoUsuario({ nombre } = {}) {
  console.log(
    "Haga algo que no necesite el parámetro de desestructuración."
  );
  return `Mi nombre es ${nombre}.`;
}</code></pre><p>Nota que en el ejemplo anterior, se asignó un objeto vacío como argumento por defecto del parámetro.</p><p>Ahora, se invoca la función sin pasar ningún argumento al parámetro de desestructuración:</p><pre><code class="language-js">obtenerInfoUsuario();</code></pre><p>La función retornará:</p><pre><code class="language-js">"Hacer algo más que no requiera el parámetro de desestructuración."
"Mi nombres es undefined."</code></pre><p><strong><a href="https://codesandbox.io/s/the-correct-way-to-invoke-a-function-containing-an-object-destructuring-parameter-7kvum?file=/src/index.js">Probarlo en CodeSandBox</a></strong></p><p>Hay que tener en cuenta que no se tiene que usar objeto vacío como el argumento de un parámetro de desestructuración por defecto. Puede usarse cualquier otro valor que no sea <code>null</code> o <code>undefined</code>.</p><h2 id="conclusi-n">Conclusión</h2><p>La desestructuración de arreglos y objetos funcionan de similar manera. La principal diferencia entre las dos asignaciones de desestructuración es esta:</p><ul><li>La desestructuración de arreglos extrae valores de un arreglo. Pero la desestructuración de objetos extrae valores de un objeto de JavaScript.</li></ul><h2 id="en-resumen">En resumen</h2><p>Este artículo discute como funciona la desestructuración de arreglos y objetos en JavaScript. También se abordó la principal diferencia entre las dos asignaciones de desestructuración.</p><p>Muchas gracias por leer!</p><p>‌ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ‌</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
