Lección 03. Variables globales y cambios en Node.js.
A pesar de que Node.js es un entorno de interpretación para Javascript, tiene algunas reglas y características a aprender y saber.
Nota: Si haz programado desarrollo web con Javascript desde el navegador, entenderás un poco algunos cambios.
Variables globales._
Recordemos que Javascipt contiene algunas variables globales a utilizar, algunas como:
El objeto console.
El objeto Math.
Entre otras más.
Estas son propiedades globales dentro de un objeto global de toda nuestra aplicación.
Nota: Esto es importante entender, para el siguiente punto.
Objeto window contra globalThis._
Si ya haz programado código javascript en desarrollo web habras utilizado algunas vez el objeto global window, del cual derivan algunas variables y funciones a utilizar.
En entorno Node.js NO EXISTE el objeto global WINDOW.
Si nosotros intentamos imprimir window:
console.log(window);Obtendremos un error:
ReferenceError: window is not defined
at Object.<anonymous> (C:UsersDZELDocumentsUniversidadCurso-NodeLeccion_01.js:1:13)
at Module._compile (node:internal/modules/cjs/loader:1469:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1548:10)
at Module.load (node:internal/modules/cjs/loader:1288:32)
at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49
Node.js v20.17.0Nota: El cual significa que el objeto window no esta definido.
En su lugar, Node.js nos ofrece en sus lugar de window el objeto:
globalThis.
Donde esta es:
Una variable global en toda nuestra aplicación.
Donde:
global (en node.js) <-- globalThis --> window (en web)
Probemos el comando:
console.log(globalThis);Que devuelve:
<ref *1> Object [global] {
global: [Circular *1],
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
queueMicrotask: [Function: queueMicrotask],
structuredClone: [Function: structuredClone],
queueMicrotask: [Function: queueMicrotask],
structuredClone: [Function: structuredClone],
atob: [Getter/Setter],
btoa: [Getter/Setter],
performance: [Getter/Setter],
fetch: [Function: fetch],
crypto: [Getter]
}De tal modo que:
//Correcto
globalThis.console.log("Hola");
//Error
window.console.log("Hola");