问题 Node.js:process.argv与process.ARGV


我注意到Node定义了两者 process.argv 和 process.ARGV (大写)。文档中没有提到后者,到目前为止,我遇到过的是同一个对象。

ARGV 只是一个历史性的延续,还是有目的?


7263
2018-04-28 22:14


起源



答案:


process.ARGV 已经 完全删除 以来 v0.5.10


10
2018-02-05 22:45



不能与提交争论。 :) - Trevor Burnham


答案:


process.ARGV 已经 完全删除 以来 v0.5.10


10
2018-02-05 22:45



不能与提交争论。 :) - Trevor Burnham


它们完全相同:

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)。

仔细查看其他符号,我猜它是为了保持一致而添加的 - argv 和 env 似乎是唯一两个同时具有小写和大写版本的人。然而, ENV 不同  从 env。也许作者认为 argv 和 ARGV 可能会有不同的相同方式 env 和 ENV


4
2018-04-28 22:25



谢谢,但我仍然想知道:目的是什么? - Trevor Burnham
+1显示原始源代码! - Dominic Barnes
每次使用process.ENV时,node都会发出警告: Use process.env instead of process.ENV。据推测,这些已被弃用但保持向后兼容性。 - Ricardo Tomasi
@ricardo:很酷,没有通过源码挖掘那么远.. + 1 :) - Demian Brecht
这很容易让人感到困惑,特别是如果你曾经使用过spidermonkey。 gjs 使用 ARGV 并不是 process.argv。有趣的事实。 - BlackVegetable