w3schools latest last ecmascript current javascript scope iife

last - javascript latest



Sombreado variable en JavaScript (3)

A continuación tenemos un IIFE que (como cualquier función) crea un ámbito local. Dentro de ese alcance hay una función de parseInt . Ahora, dado que ya existe una función global en el navegador con ese nombre, la función local eclipsará la función de análisis global: dentro de la IIFE, cualquier llamada a parseInt llamará a la función local, y no a la función global. (La función global aún se puede referenciar con window.parseInt ).

parseInt(''123'', 10); // the browser function is called (function() { function parseInt() { return ''overshadowed''; } parseInt(''123'', 10); // the local function is called })(); parseInt(''123'', 10); // the browser function is called

¿Existe un nombre de jure (especificación ECMAScript) o de facto (común) para esto? ¿Overshadowing? Sobrecarga?


El término correcto es [Variable] Sombreado

En la programación de computadoras, el oscurecimiento variable ocurre cuando una variable declarada dentro de un cierto alcance (bloque de decisión, método o clase interna) tiene el mismo nombre que una variable declarada en un ámbito externo. Se dice que esta variable externa está sombreada ...

Las funciones en JavaScript son solo objetos de función almacenados dentro de variables (o propiedades) que siguen las mismas reglas de alcance / cadena / resolución que las variables normales (o propiedades) . Esto explica por qué todavía se puede acceder al window.parseInt como window.parseInt también. Es el "IIFE" el que introduce este nuevo ámbito (las funciones son la única forma de introducir un nuevo alcance en JavaScript).

Sin embargo, la especificación ECMAScript [5th Edition] no utiliza el término sombreado , ni puedo encontrar un término de reemplazo específico. (El comportamiento de sombreado fundamental se define en "10.2.2.1 GetIdentifierReference" y secciones relacionadas).

No está sobrecargando y no está anulando , que son completamente diferentes. No tengo idea de dónde se originó el sombreado (en este contexto) o cómo se supone que difiere del sombreado "normal" [variable] . Si el término ocultamiento no existía para explicar este comportamiento, entonces - desde un punto de vista del idioma inglés de todos modos - el sombreado ("hacer insignificante / inconsecuente") podría ser más apropiado que el sombreado ("para proyectar sombra sobre / oscurecer") .

Feliz codificación.


Más comúnmente llamado "sombreado".


Si sucedió por accidente / error, lo llamarías " clobbering del parseInt() original parseInt() .

De lo contrario, creo que lo vi referirse al sombreado recientemente aquí en .