有人可以解释一下"process.argv"在node.js中的含义吗?

Jus*_* R. 51 node.js

我目前正在学习node.js,我只是很好奇这是什么意思,我正在学习,你能告诉我为什么这段代码会做它的作用:

var result = 0;

  for (var i = 2; i < process.argv.length; i++){
    result += Number(process.argv[i]);
}
  console.log(result);
Run Code Online (Sandbox Code Playgroud)

我知道它会添加你添加到命令行的数字,但为什么"i"以2开头?我理解for循环,所以你不必详细了解它.

非常感谢你提前.

sle*_*ica 56

你可以解决这个问题console.log(process.argv).

它从2开始,因为它process.argv包含整个命令行调用:

process.argv = ['node', 'yourscript.js', ...]
Run Code Online (Sandbox Code Playgroud)

元素01不是你所说的"论据",但它们在那里.

  • 元素0和1是shell的参数。其余的是node.js的参数。 (3认同)
  • @jonschlinkert 不,1 用于节点。 (2认同)

Ray*_*oal 26

它从2开始,因为代码将运行

node myprogram.js firstarg secondarg
Run Code Online (Sandbox Code Playgroud)

所以

process.argv[0] == "node"

process.argv[1] == "myprogram.js"

process.argv[2] == "firstarg"
Run Code Online (Sandbox Code Playgroud)

在线文档


mae*_*ics 5

您的程序打印提供给节点脚本的"命令行参数"的数值之和.

例如:

$ /usr/local/bin/node ./sum-process-argv.js 1 2 3
6
Run Code Online (Sandbox Code Playgroud)

Node.js API文档中process.argv:

包含命令行参数的数组.第一个元素是'node',第二个元素是JavaScript文件的名称.下一个元素将是任何其他命令行参数.

在上面的例子中,这些值是:

process.argv[0] == '/usr/local/bin/node'
process.argv[1] == '/Users/maerics/src/js/sum-process-argv.js'
process.argv[2] == '1'
process.argv[3] == '2'
process.argv[4] == '3'
Run Code Online (Sandbox Code Playgroud)

另请参见JavaScript 的Number(...)函数/构造函数.