我注意到Node定义了
process.argv
和process.ARGV
(大写)。后者未在文档中提到,在我遇到的每种情况下,它都是相同的对象。
ARGV
只是一个历史遗留问题,还是有用途的呢?process.argv
和process.ARGV
(大写)。后者未在文档中提到,在我遇到的每种情况下,它都是相同的对象。
ARGV
只是一个历史遗留问题,还是有用途的呢?它们是相同的:
node.cc
// process.argv
Local<Array> arguments = Array::New(argc - option_end_index + 1);
arguments->Set(Integer::New(0), String::New(argv[0]));
for (j = 1, i = option_end_index; i < argc; j++, i++) {
Local<String> arg = String::New(argv[i]);
arguments->Set(Integer::New(j), arg);
}
// assign it
process->Set(String::NewSymbol("ARGV"), arguments);
process->Set(String::NewSymbol("argv"), arguments);
编辑(基于进一步的问题):
只有一个人能够告诉你这件事情确切的答案(即作者本人)。你可能可以在IRC(irc.freenode.net #node.js
)上找到他。
从其他符号中看,我猜这个 ENV
变量是为了保持一致性而添加的。 argv
和 env
似乎是仅有的两个既有小写版本也有大写版本的变量。然而,ENV
与 env
稍有不同。也许作者认为 argv
和 ARGV
可能会像 env
和 ENV
那样有所不同?
请使用process.env而不是process.ENV
。据推测,这些变量已经被弃用但为了向后兼容性而保留。 - Ricardo Tomasigjs
使用的是ARGV
而不是process.argv
。有趣的事实。 - BlackVegetable