我正在研究“learnyounode”的Baby Steps部分,这是一个交互式的Node.js教程。
编写一个程序,接受一个或多个数字作为命令行参数,并将这些数字的总和打印到控制台(stdout)。
由于我之前了解JavaScript,我认为这很简单:
var sum = 0;
for (var i = 2; i < process.argv.length; i++) {
console.log('Adding ' + process.argv[i]);
sum += Number(process.argv[i]);
}
console.log(sum)
我看不出这段代码有什么问题,但结果对我来说似乎是不确定的!
d:\repos\github\damd\learnyounode>learnyounode run baby_steps.js 1 2 3
Adding 1
Adding 72
Adding 45
Adding 32
150
d:\repos\github\damd\learnyounode>learnyounode run baby_steps.js
Adding 22
Adding 41
Adding 85
Adding 38
186
d:\repos\github\damd\learnyounode>learnyounode run baby_steps.js 10 20 30
Adding 60
Adding 25
Adding 96
Adding 24
Adding 76
Adding 96
Adding 21
Adding 53
Adding 6
Adding 51
Adding 87
Adding 29
Adding 2
Adding 21
Adding 28
Adding 47
Adding 18
Adding 89
829
这里发生了什么?我在Windows 7上使用Node.js v0.10.34。
答案 0 :(得分:1)
运行功能中的learnyounode
提供了自己的参数(您不知道),而不会被要求并忽略您自己的参数。
你应该运行你的文件,调用这样好的节点可执行文件:
node baby_steps.js
而不是调用learnyounode可执行文件:
learnyounode run baby_steps.js
答案 1 :(得分:-1)
请注意,验证程序需要非确定性值... 也许这个练习只是想用输入作为向量索引号(方向) 无论自身价值如何。
这些数字看起来不确定的原因可能是 argvs [] 向量用于携带环境的非静态值(也就是你在索引零上运行节点)。
请记住, learnyounode run 功能可以通过随机输入来为您提供测试环境。
无论如何,在Github上有一个很棒的演练: