我正在学习node.js,我只是很好奇这是什么意思,我正在学习,你能告诉我为什么这段代码会做它的作用:
var result = 0;
for (var i = 2; i < process.argv.length; i++){
result += Number(process.argv[i]);
}
console.log(result);
我知道它会添加您添加到命令行的数字,但为什么“i”以2开头?我理解for循环,所以你不必详细了解它。
提前非常感谢你。
答案 0 :(得分:50)
你可以用console.log(process.argv)
解决这个问题。
它从2开始,因为process.argv
包含整个命令行调用:
process.argv = ['node', 'yourscript.js', ...]
元素0
和1
不是你所谓的“参数”,而是它们的存在。
答案 1 :(得分:25)
它以2开头,因为代码将以
运行node myprogram.js firstarg secondarg
所以
process.argv[0] == "node"
process.argv[1] == "myprogram.js"
process.argv[2] == "firstarg"
答案 2 :(得分:5)
例如:
$ /usr/local/bin/node ./sum-process-argv.js 1 2 3
6
来自Node.js API documentation for 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'
另请参阅JavaScript的Number(...)
function/contructor。
答案 3 :(得分:2)
在node.js中,命令行参数始终存储在数组中。在该数组中,第一个元素是我们引用的节点命令,因为我们使用单词“node”开始命令行。第二个元素是我们引用的javascript(JS)文件,它经常出现在node命令之后。
我们知道,在JS数组的第一个元素从零开始,第二个元素是1,它变为2,3,4和on。让我们将这个数组命名为process.argv并添加命令行参数x和y。然后,这就是我们如何称呼这些元素:
var process.argv = ['node', 'file.js', ‘x’, ‘y’];
var process.argv [0] = node;
var process.argv [1]= file.js;
var process.argv[2] = x;
var process.argv[3] = y;
简而言之,元素0和1是node.js的原生,我们在编写任何命令行参数时都不使用它们。这就是我们忽略0和1并始终从2开始的原因。
如果我们想循环遍历命令行参数,那么我们必须从2开始。这是我们用于循环的内容。
for (i = 2; i < process.argv.length; i++){
console.log(process.argv[i]);
}
答案 4 :(得分:1)
执行时如下:
node code.js <argument> <argument>....
它考虑了所有命令行调用。对于process.argv[]
数组,将有["node","code.js","<argument>",...]
因为你的参数在数组中以索引2开头
答案 5 :(得分:0)
我的答案不是关于process.argv
的工作原理-因为这里有很多答案,而是关于如何使用array destructuring syntax
获取值的问题。
例如,如果您使用以下命令运行脚本:
node app.js arthur 35
您可以像这样以更具可读性的方式获取这些值:
const [node, script, name, age] = process.argv;
console.log(node); // node
console.log(script); // app.js
console.log(name); // arthur
console.log(age); // 35
您可以省略process.argv
的第一个和第二个地方,而仅与name
和age
在一起:
const [, , name, age] = process.argv;
如果要将所有参数都放在数组中,则可以使用rest syntax
进行操作,即收集多个元素并将其压缩为单个元素,如下所示:
const [node, script, ...params] = process.argv;
console.log(node); // node
console.log(script); // app.js
console.log(params); // [ 'arthur', '35' ]
,当然,您可以省略process.argv
的第一个和第二个地方,而只使用 params :
const [, , ...params] = process.argv;
答案 6 :(得分:-2)
process.agrv [i] - 基本上循环执行文件时在终端中传递的命令行参数。
例如 - 如果您将文件作为
运行
$ node prog.js 1 2 3,然后是process.argv [0] = 1等等..