Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
Agregar parámetros de función crea un sombreado variable, mientras que ningún parámetro da como resultado una reasignación.

A continuación, tengo 2 ejemplos, con la única diferencia de que una función tiene un parámetro mientras que la otra no. Pero el Ejemplo 1 registrará un hello en la consola, mientras que el Ejemplo 2 registrará un hello! a la consola

Mi pregunta es ¿por qué el Ejemplo 1 registra hello mientras que el Ejemplo 2 registra hello! .

Ejemplo 1, no estoy seguro de lo que está pasando. Mi conjetura es que en el Ejemplo 1 estamos usando sombreado variable. El parámetro de greet se inicializa en una cadena primitiva hello . El parámetro de greet sombrea el greet de la línea 1. Por lo tanto, cuando registramos greet en la consola, estamos registrando el greet desde el ámbito global, hello .

No estoy seguro pero, en el Ejemplo 2, la función salutation se invoca con el argumento 'hello' . Luego, la variable global greet se reasigna al valor de 'hello' + '!' . Por lo tanto, cuando se registra greet en la consola, estamos registrando el valor al que se reasignó greet , hello! .

¿Por qué la falta de un parámetro de greet en la función nos permite registrar el valor reasignado a la consola? Pero cuando la función tiene un parámetro, ¿registramos la variable global en la consola?

Ejemplo 1.

 let greet = 'hello'; function salutation(greet) { greet = greet + '!'; } salutation(greet); console.log(greet); //hello

Ejemplo 2.

 let greet = 'hello'; function salutation() { greet = greet + '!'; } salutation(greet); console.log(greet); //'hello!'

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El argumento de la función se copia por valor , por lo que el greet (global) y el greet (local) son completamente diferentes. Con la línea de abajo, greet es una copia de la variable global y solo está disponible dentro de la función, por lo tanto, local.

 function salutation(greet) { greet = greet + '!'; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Por qué la falta de un parámetro de greet en la función nos permite registrar el valor reasignado a la consola? Pero cuando la función tiene un parámetro, ¿registramos la variable global en la consola?

Ambos ejemplos registran la variable global en la consola.

Es solo que en el primer fragmento, hay una variable de greet local que se reasigna, mientras que en el segundo fragmento no hay una variable local y asigna (y accede) a la variable global de greet través del cierre.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda