Este script tiene un comportamiento diferente en función de si se ejecuta desde el shell del nodo js o si se almacena en un archivo de script que se pasa al nodo.¿Por qué las funciones no están disponibles en el objeto global?
Guión:
var a = 1;
function b(){return 1;}
for(var k in global) console.log(k);
salida en shell (sólo últimos 4 líneas son relevantes OMI Cada una de las 3 líneas eran copia/secuencialmente pegado en una instancia de nodo REPL ejecuta en Terminal en Mac OS X.):
ArrayBuffer
Int8Array
Uint8Array
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
DataView
global
process
GLOBAL
root
Buffer
setTimeout
setInterval
clearTimeout
clearInterval
console
module
require
a
_
b
k
de salida cuando se ejecuta como un script guardado (llamado node myscript.js
de fiesta en Mac OS X):
ArrayBuffer
Int8Array
Uint8Array
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
DataView
global
process
GLOBAL
root
Buffer
setTimeout
setInterval
clearTimeout
clearInterval
console
¿Por qué son diferentes y por qué mi script no puede ver a
y b
en global
?
EDITAR: Agregar una declaración adicional c = 2 cambió la salida. c era visible en ambos métodos de ejecución del script. Sin embargo, esto todavía no explica la presencia de a y b al ejecutar el script desde el shell.
Puede agregar a su experimento: 1) Una asignación de variable sin 'var': Haga una' c = 3'; 2) 'console.log (this === global)' –
¿Puede también detallar cómo pasa estos archivos al nodo? (Las líneas de comando exactas) –
Hecho. ¿Algo más, Ates? – Trindaz