このスクリプトは、ノードの js シェルから実行されるか、ノードに渡されるスクリプト ファイルに格納されるかによって、動作が異なります。
脚本:
var a = 1;
function b(){return 1;}
for(var k in global) console.log(k);
シェルでの出力 (最後の 4 行のみが関連する IMO です。3 行のそれぞれは、Mac OS X のターミナルで実行されているノード REPL インスタンスに順番にコピー/貼り付けされています):
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
保存されたスクリプトとして実行した場合の出力 ( node myscript.js
Mac OS X では bash から呼び出されます):
ArrayBuffer
Int8Array
Uint8Array
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
DataView
global
process
GLOBAL
root
Buffer
setTimeout
setInterval
clearTimeout
clearInterval
console
それらが異なるのはなぜですか? また、スクリプトが と を認識できないのはa
なぜb
ですかglobal
?
編集:追加のステートメント c = 2 を追加すると、出力が変更されました。c は、スクリプトを実行する両方の方法で表示されました。ただし、シェルからスクリプトを実行する場合、これはまだ a と b の存在を説明していません。