此脚本具有不同的行为,具体取决于它是从节点js shell运行还是存储在传递给节点的脚本文件中。为什么函数在全局对象中不可用?
脚本:
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
:当作为保存的脚本(bash中,从Mac OS X上称为
node myscript.js
)运行
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
输出
为什么它们有什么不同,为什么不能我的脚本看到global
a
和b
?
编辑:添加一个附加语句C = 2发生变化的输出。 c在运行脚本的两种方法中都可见。尽管如此,这仍然不能解释a和b的存在。
您可以添加到您的实验:1)一个变量赋值没有'var':所以只是做一个'C = 3'; 2)'console.log(this === global)' –
您还可以详细说明如何将这些文件传递给Node? (确切的命令行) –
完成。还有其他什么? – Trindaz