Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Ámbito del código

Cuando se carga JavaScript en mongosh, las funciones y variables de nivel superior definidas con const, var y let se añaden al ámbito global.

Considera el siguiente código:

const SNIPPET_VERSION = "4.3.2";
var loadedFlag = true;
let unloaded = false;
function isSnippetLoaded(loadedFlag) {
return ( loadedFlag ? "Snippet is loaded" : "Snippet is not loaded" )
}

Las variables, SNIPPET_VERSION, loadedFlag, y unloaded se añaden al ámbito global junto con la función, isSnippetLoaded().

Para evitar colisiones con funciones y variables definidas en otro código, asegúrate de considerar el alcance al escribir los scripts. Como mejores prácticas, MongoDB recomienda encerrar tu código para limitar el alcance. Esto protege contra colisiones accidentales de alcance con elementos de nombre similar en el ámbito global.

Una forma de mantener las funciones y variables fuera del ámbito global es envolver tu código de la siguiente manera:

'use strict';
(() => {
...
})()

Tip

use strict; es para su uso en scripts. Si ingresas use strict; directamente en la consola mongosh, mongosh cambiará a una base de datos llamada strict.

Compara las siguientes muestras de código. Son muy similares, pero el segundo está escrito de manera que restringe el alcance de la variable.

Muestra 1: Alcance sin restricciones.

let averageGrossSales = [ 10000, 15000, 9000, 22000 ];
const Q1_DISCOUNT = .10;
const Q2_DISCOUNT = .15;
const Q3_DISCOUNT = .06;
const Q4_DISCOUNT = .23;
function quarterlySales(grossAmount, discount ) {
return grossAmount * discount ;
}
function yearlySales() {
let annualTotal = 0;
annualTotal += quarterlySales(averageGrossSales[0], Q1_DISCOUNT );
annualTotal += quarterlySales(averageGrossSales[1], Q2_DISCOUNT );
annualTotal += quarterlySales(averageGrossSales[2], Q3_DISCOUNT );
annualTotal += quarterlySales(averageGrossSales[3], Q4_DISCOUNT );
return annualTotal ;
}

Muestra 2: Ámbito restringido.

(() => {
let averageGrossSales = [ 10000, 15000, 9000, 22000 ];
const Q1_DISCOUNT = .10;
const Q2_DISCOUNT = .15;
const Q3_DISCOUNT = .06;
const Q4_DISCOUNT = .23;
function quarterlySales(grossAmount, discount ) {
return grossAmount * discount ;
}
globalThis.exposedYearlySales = function yearlySales() {
let annualTotal = 0;
annualTotal += quarterlySales(averageGrossSales[0], Q1_DISCOUNT );
annualTotal += quarterlySales(averageGrossSales[1], Q2_DISCOUNT );
annualTotal += quarterlySales(averageGrossSales[2], Q3_DISCOUNT );
annualTotal += quarterlySales(averageGrossSales[3], Q4_DISCOUNT );
return annualTotal ;
}
} )()

En la muestra 2, los siguientes elementos están todos definidos dentro de una función anónima y todos están excluidos del alcance global:

  • La función principal, yearlySales()

  • La función asistente, quarterlySales()

  • Las variables

La instrucción de asignación globalThis.exposedYearlySales = function yearlySales() agrega exposedYearlySales al ámbito global.

Cuando tú, llamas exposedYearlySales() llama a la función yearlySales(). La función yearlySales() no es accesible directamente.

Volver

Variables de entorno

En esta página