このスクリプトは、ノードjsシェルから実行されるのか、ノードに渡されるスクリプトファイル内に格納されるのかによって、異なる動作をします。グローバルオブジェクトで機能が使用できないのはなぜですか?
スクリプト:シェルで
var a = 1;
function b(){return 1;}
for(var k in global) console.log(k);
出力(最後の4行が3行の各々はコピー/のMac OS Xのターミナルで実行しているノードREPLインスタンスに順次貼り付けられたIMO関連している。):
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
出力する(Mac OS X上のbashからnode myscript.js
と呼ばれる)保存したスクリプトとして実行:
ArrayBuffer
Int8Array
Uint8Array
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
DataView
global
process
GLOBAL
root
Buffer
setTimeout
setInterval
clearTimeout
clearInterval
console
なぜ異なるのですか?とb
はglobal
に表示されないのはなぜですか?
EDIT:追加ステートメントc = 2を追加すると、出力が変更されました。スクリプトを実行する両方の方法でcが表示されました。しかしこれはまだシェルからスクリプトを実行するときにaとbの存在を説明していません。
実験に追加することはできますか?1) 'var'を使わない変数の代入:' c = 3'を実行します。 2) 'console.log(this === global)' –
これらのファイルをどのようにNodeに渡すかを詳しく説明できますか? (正確なコマンドライン) –
完了。他の何かAtes? – Trindaz