Curso de Closures y Scope en JavaScript

Strict Mode

Curso de Closures y Scope en JavaScript

Contenido del curso

Bienvenida

  • 1
    Bienvenida al Curso de Closures y Scope

    Bienvenida al Curso de Closures y Scope

    01:11 min

Tipos de scope en JavaScript

  • 2
    Global Scope

    Global Scope

    12:09 min
  • 3
    Function Scope

    Function Scope

    05:52 min
  • 4
    Block Scope

    Block Scope

    07:16 min
  • 5
    Reasignación y redeclaración

    Reasignación y redeclaración

    14:05 min
  • 6
    Strict Mode

    Strict Mode

    Viendo ahora

Closure

  • 7
    ¿Qué es un Closure?

    ¿Qué es un Closure?

    09:37 min
  • 8
    Practicando Closures

    Practicando Closures

    15:24 min

Hoisting

  • 9
    ¿Qué es el Hoisting?

    ¿Qué es el Hoisting?

    08:28 min

Debugging

  • 10
    Debugging

    Debugging

    04:33 min

Cierre

  • 11
    Conclusiones

    Conclusiones

    03:23 min
schoolTomar examen
search
CursosEmpresasBlogLiveConfEventosPrecios

0:00/5:54

Strict Mode

Curso de Closures y Scope en JavaScript

Clase 6 de 11

Clase 6 / 11

Progreso del curso

Bienvenida

  • 1

    Bienvenida al Curso de Closures y Scope

    01:11

Tipos de scope en JavaScript

  • 2lock

    Global Scope

    Suscríbete para ver más
  • 3lock

    Function Scope

    Suscríbete para ver más
  • 4lock

    Block Scope

    Suscríbete para ver más
  • 5lock

    Reasignación y redeclaración

    Suscríbete para ver más
  • play_arrowlock

    Strict Mode

    play_circleViendo ahora

Closure

  • 7lock

    ¿Qué es un Closure?

    Suscríbete para ver más
  • 8lock

    Practicando Closures

    Suscríbete para ver más

Hoisting

  • 9lock

    ¿Qué es el Hoisting?

    Suscríbete para ver más

Debugging

  • 10lock

    Debugging

    Suscríbete para ver más

Cierre

  • 11lock

    Conclusiones

    Suscríbete para ver más
workspace_premiumTomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

Comentarios (43)43 comentarios

Recursos

El modo estricto es una funcionalidad que le permite al motor de JavaScript cambiar la manera en que ejecuta el código. En este modo, se reduce las cosas que podemos hacer, esto es bueno porque permite manejar errores que son poco perceptibles o que el motor de JavaScript sobreentiende y ayuda a su compilación para corregirlos.

Este en el código colocando en la primera línea "use strict" para todo el archivo. También puede utilizarse en la primera línea de una función, pero no para un bloque en específico.

Ejemplo usando el modo estricto

Si realizas el siguiente código que contiene una asignación sin una declaración, no va a ocurrir un error y el programa se va a ejecutar con normalidad.

nombre = "Andres" console.log(nombre) // "Andres"

En modo estricto, no te permitirá realizar esto y provocará un error.

"use strict"; nombre = "Andres" console.log(nombre) // ReferenceError: nombre is not defined

Ejemplo usando el modo estricto en una función

Si realizas el siguiente código que retornas una variable no declarada, no va a ocurrir un error y el programa se va a ejecutar con normalidad.

function myFunction(){ return pi = 3.14 } console.log(myFunction()) // 3.14

En modo estricto, no te permitirá realizar esto y provocará un error.

"use strict"; function myFunction(){ return pi = 3.14 } console.log(myFunction()) // ReferenceError: pi is not defined

Contribución creada por: Andrés Guano.

Alfredo Olmedo

Alfredo Olmedo

Hace 4 años
    Oscar Barajas Tavares

    Oscar Barajas Tavares

    Team Platzi
    Hace 4 años
    Luis Hernando Sendoya Serrato

    Luis Hernando Sendoya Serrato

    Hace 4 años
Omar Esteban Contreras Leal

Omar Esteban Contreras Leal

Hace 4 años
Lucas Rojas

Lucas Rojas

Hace 4 años
    Agu Damonte

    Agu Damonte

    Hace 4 años
    Julian Camilo Sanchez Sosa

    Julian Camilo Sanchez Sosa

    Hace 4 años
Rubén Cuello

Rubén Cuello

Hace 4 años
    Nicolas Forero Quevedo

    Nicolas Forero Quevedo

    Hace 4 años
    Alejandro Brand

    Alejandro Brand

    Hace 4 años
Joao Ivan Garduño Salgado

Joao Ivan Garduño Salgado

Hace 4 años
    Rafael Martínez Rodríguez

    Rafael Martínez Rodríguez

    Hace 4 años
Henry Jeffersson Salinas Arenas

Henry Jeffersson Salinas Arenas

Hace 4 años
Ramsés Castañeda

Ramsés Castañeda

Hace 4 años
    Guadalupe Monge Barale

    Guadalupe Monge Barale

    Hace 4 años
    Pablo Cesar Acosta Paredes

    Pablo Cesar Acosta Paredes

    Hace 3 años
César Palma

César Palma

Hace 4 años
Luis Carlos Zapata García

Luis Carlos Zapata García

Hace 4 años
Santiago Forero Mendez

Santiago Forero Mendez

Hace 3 años
    Brandon Lee Aguero Fernandez

    Brandon Lee Aguero Fernandez

    Hace 3 años
SANDRO SIMON

SANDRO SIMON

Hace 4 años
    Oscar Barajas Tavares

    Oscar Barajas Tavares

    Team Platzi
    Hace 4 años
Carlos S. Aldazosa

Carlos S. Aldazosa

Hace 4 años
Rodrigo Espinosa

Rodrigo Espinosa

Hace 4 años
Santiago Rodriguez Chaves

Santiago Rodriguez Chaves

Hace 4 años
Laura Muñoz

Laura Muñoz

Hace 4 años
    Alan Cabrera

    Alan Cabrera

    Hace 4 años
Brandon Lee Aguero Fernandez

Brandon Lee Aguero Fernandez

Hace 3 años
David Rangel

David Rangel

Hace 3 años
Kevin Zavala

Kevin Zavala

Hace 4 años
    Alvaro Eduardo Garzón Pira

    Alvaro Eduardo Garzón Pira

    Hace 4 años
Jefred Bedoya

Jefred Bedoya

Hace 6 meses•editado
Jess Key

Jess Key

Hace 10 meses

El modo estricto tiene varios cambios en la semántica normal de JavaScript:

  1. Elimina algunos errores silenciosos de JavaScript cambiándolos para que lancen errores.

  2. Corrige errores que hacen difícil para los motores de JavaScript realizar optimizaciones: a veces, el código en modo estricto puede correr más rápido que un código idéntico pero no estricto.

  3. Prohíbe cierta sintaxis que probablemente sea definida en futuras versiones de ECMAScript.

Gracias por el aporte Aldredo.

que buen aporte, gracias

El modo estricto se aplica a un script completo o a funciones individuales. No se aplica a bloques entre corchetes {}; intentar aplicarlo en tales contextos no hace nada. Datos extraídos de MDN. Que gusto es volver a hacer este curso y aprender nuevas cosas =)!

Para profundizar el strict mode https://www.youtube.com/watch?v=7e6ssF78Af4

Un groso sacha

Gracias por el aporte, esta explicacion mereció tal profundidad 👏🏻

Así que fue creado en una semana. Con razón :smile:

con razon que XD

"Ehj todavia tengo tiempo para entregar el trabajo..." jaja

Strict Mode: Nos permite ejecutar de forma estricta reglas particulares. Por ejemplo:

  • Para mejorar el control de la asignación de las variables y algunos otros elementos claves para que nuestro código cumpla con el mayor de los estándares.

Muchas gracias por el aporte.

les recomiendo que instalen esta extensión Quokka.js Visual Studio Code Extension

¿El 'use strict' se tiene que poner arriba del todo?

Sí.

Así es !

La historia de javascript es el mejor ejemplo de la aplicación de metodologías agiles :D. Un software evolucionando con el tiempo a medida que la necesidad lo amerita o en este caso el alcance del proyecto cambia. El modo estricto otra de las mejoras para escribir un mejor código javascript.

Algo que apuntar sobre el futuro. El modo estricto funciona por defecto en aplicaciones que importan/exportan otros archivos js (módulos). Por ejemplo una web estática importando script type=module o una web usado un framework. Así que en el futuro al desarrollar una web en las prácticas actuales el modo estricto ya está bajo el capó.

https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Strict_mode#modo_estricto_para_m%C3%B3dulos

Strict mode

strict mode.png

¿Sube la complejidad al hacer código con strict mode?

  • Forma de tener mejor control de la asignación de las variables.

  • Código cumpla con el mayor de los estandares.

Ejemplo Código Javascript strict mode

'use strict'; pi = 3.1416; console.log(pi); function myFunction() { return pi = 3.1416; } console.log(myFunction());

Entonces 'use strict' que tipo de scope tiene? porque veo que se volvió a usar como si fuera local

Global, solo basta con colocar el "use strict” al inicio de tu archivo

¿Hay forma de establecer 'use strict para todo el proyecto?

si, y existen herramientas como ESLint para crear estas reglas. https://eslint.org/docs/latest/rules/global-strict

Algo que no sabía es que los módulos tienen el "modo estricto" de forma implícita, esto significa que todo modulo esta en "modo estricto", sin necesidad de declararlo con el use strict

function myStrictFunction() { // because this is a module, I'm strict by default } export default myStrictFunction;

Informacion sacada de MDN

El modo estricto añade restricciones al lenguaje para prevenir errores comunes y mejorar la seguridad del código. Algunas de las restricciones incluyen:

  • No se pueden usar variables sin declarar previamente.

  • No se puede usar una palabra reservada como nombre de variable o función.

  • No se puede hacer una asignación a una propiedad no escribible.

  • No se puede usar un objeto global como objeto "this" en una función sin objeto.

Se recomienda usar 'use strict' en todos los archivos JavaScript para garantizar una mejor calidad del código y prevenir errores.

Strict Mode: Nos permite ejecutar de forma estricta las reglas de JS

En qué tipos de proycto es mejor trabajar con strict mode?

En general no se suele usar ya que tiene usos muy específicos como "arreglar" el uso de var, pero como no se suele usar var en la gran mayoría de proyectos no usamos el strict mode.

Aunque seguro en el futuro encontrarás un proyecto en el que te resulte útil.

Saludos :)

Ahora cuando haga mis proyectos con javascript usare el "strict mode", de esta manera me evito problemitas jejeje

Esta es la justificación para la creación de un "loopy mode" o "modo poco riguroso" y de un modo "estricto", según la documentación de Mozilla:

El modo estricto cambia algunos errores de sintaxis tolerados en modo no estricto y los convierte en errores. JavaScript fue diseñado de modo que fuera fácil para programadores novatos, y puede haber operaciones semánticas que deberían ser errores pero son tratadas como libres de error. A veces esto sirve para solucionar el problema en el momento, pero puede crear problemas más graves en el futuro. El modo estricto trata las equivocaciones como errores, para que se puedan descubrir y subsanar inmediatamente.

Esa curiosidad de que JS fue escrito en una semana no me la sabía :O

Y como curiosidad adicional, JavaScript cuando nació y que fue escrito en este corto tiempo, no se llamaba JavaScript, se llamaba Mocha

El poder de Strict Mode

  • Seguridad: Convierte errores silenciosos en excepciones claras para el desarrollador.
  • Variables: Impide la creación accidental de variables globales.
  • Contexto: Define this como undefined en funciones simples, evitando fugas al objeto global.

Restricciones clave

  • Prohíbe el uso de with.
  • Evita duplicados en parámetros de funciones.
  • Bloquea asignaciones a propiedades de solo lectura.