A continuación tenemos un IIFE que (como cualquier función) crea un ámbito local. Dentro de ese alcance hay una función parseInt
. Ahora, dado que ya existe una función global en el navegador con ese nombre, la función local eclipsará la función global parseInt
- dentro de la IIFE cualquier llamada al parseInt
llamará a la función local, y no a la función global. (La función global todavía se puede hacer referencia a window.parseInt
.)Sombreado variable en JavaScript
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 jure (ECMAScript especificación) o facto nombre de (común) para esto? ¿Overshadowing? Sobrecarga?
'las funciones son la única forma de introducir un nuevo ámbito en JavaScript' excepto * con *, * eval * y * Function() *, que modifican el alcance. – RobG
En ES6, if/for blocks puede introducir un nuevo alcance, al igual que las clases. De todos modos, creo que "sombra" es (mucho) mejor que "sombra". La definición relevante no es "lanzar sombra sobre/oscurecer", sino más bien "seguir (en la sombra de alguien)". –