Questo script ha un comportamento diverso a seconda che è gestito dalla shell nodo js o memorizzato in un file di script passato al nodo.Perché le funzioni non sono disponibili nell'oggetto globale?
Script:
var a = 1;
function b(){return 1;}
for(var k in global) console.log(k);
uscita in guscio (solo ultime 4 righe sono rilevanti IMO ciascuna delle 3 linee erano copia/sequenziale incollato in un'istanza nodo REPL esecuzione in Terminal su 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
uscita quando eseguito come uno script salvato (chiamato node myscript.js
da bash su Mac OS X):
ArrayBuffer
Int8Array
Uint8Array
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
DataView
global
process
GLOBAL
root
Buffer
setTimeout
setInterval
clearTimeout
clearInterval
console
Perché sono diversi, e perché il mio script non possono vedere a
e b
in global
?
EDIT: Aggiunta di un ulteriore economico c = 2 cambiato l'uscita. c era visibile in entrambi i metodi di esecuzione dello script. Tuttavia, ciò non spiega la presenza di aeb durante l'esecuzione dello script dalla shell.
si può aggiungere al vostro esperimento: 1) L'assegnazione variabile senza 'var': Quindi basta fare una' c = 3'; 2) 'console.log (this === global)' –
Puoi anche descrivere dettagliatamente come passare questi file al nodo? (Le esatte righe di comando) –
Fatto. Qualcos'altro Ates? – Trindaz