Cómo pasar undefined a expresiones de funciones invocadas inmediatamente en JavaScript

 

 

 

A veces, se puede detectar código antiguo en el que se pasa “undefined” a una función. ¿Por qué?

Descubrí este pequeño truco mientras veía el famoso vídeo de Paul Irish sobre el código fuente de jQuery .

Ese video proviene de una época diferente y tiene 9 años al momento de escribirlo, y el código fuente de jQuery ha cambiado desde entonces, por lo que no puedes detectar esto allí, pero aún así es algo que encontré interesante.

Además, JavaScript ha cambiado desde entonces. Esta técnica solo se aplicaba a JavaScript anterior a ES5.

Antes de ES5, lanzado en 2009, este era un paso casi obligatorio.

Nota: Las bases de código ES5+ ya no necesitan agregar esto porque ahora undefinedes un valor de solo lectura.

 

A veces en nuestro código verificamos las variables para ver si no están definidas, de esta manera:

if (car !== undefined) {}

Si este es nuestro código, que se ejecuta en nuestros propios servidores, que controlamos, debería funcionar bien. Pero imaginemos que una biblioteca como jQuery necesita ser probada en campo abierto para que funcione en todos los sitios posibles.

Si alguien sobrescribe undefinedcon un simple

undefined = ' ' //whatever value you prefer

entonces lo anterior iffallaría, comparando carcon .

Esto ya se ha solucionado en ES5, pero era posible antes de eso.

Si caren realidad no estaba definido, no había forma de saberlo ahora.

Excepto que usamos esta técnica: envolvemos todo nuestro código en una IIFE ( Expresión de función invocada inmediatamente ) y pasamos un parámetro a la definición de la función, sin agregarlo en la fase de invocación.

(function() { /* our function code */})()
(function(undefined) { /* our function code */})()

Mira, undefinedse pasa como argumento, pero no como parámetro cuando invocamos la función. Por lo tanto, dentro de la función, el valor de la variable undefinedes (garantizado) el valor original de undefined. No importa lo que otros scripts de la página le hagan, está aislado.Te recomendamos Todo sobre sofas

Ahora, mi forma favorita de resolver este problema es usar esta técnica para verificar valores indefinidos:

 

if (typeof car !== 'undefined') {}

El typeofoperador devuelve una cadena con el tipo de una variable. Podemos compararla con la 'undefined'cadena y no tendríamos el problema mencionado anteriormente.

Pero siempre es bueno conocer las razones de algunas cosas que puedes leer en código escrito por otros, especialmente cuando se trata de código de nivel de biblioteca que necesita ejecutarse en todas partes.

Tips para principiantes de JavaScript




Tal vez te puede interesar:

  1. Cómo generar un número aleatorio entre dos números en JavaScript
  2. Cómo esperar el evento DOM listo en JavaScript simple
  3. Cómo determinar si una fecha es hoy en JavaScript
  4. Cómo contar el número de propiedades en un objeto JavaScript

Cómo pasar undefined a expresiones de funciones invocadas inmediatamente en JavaScript

A veces, se puede detectar código antiguo en el que se pasa “undefined” a una función. ¿Por qué?

programar

es

2025-01-17

 

Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente

 

 

Update cookies preferences