Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 agregan 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; Se utiliza en scripts. Si introduce directamente use strict; en la mongosh consola, cambiará a una base demongosh datos strict llamada.

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 declaració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