Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Baby steps Node.js程序打印不确定的结果_Javascript_Node.js - Fatal编程技术网

Javascript Baby steps Node.js程序打印不确定的结果

Javascript Baby steps Node.js程序打印不确定的结果,javascript,node.js,Javascript,Node.js,我正在学习“LearnyYouNode”的婴儿步骤部分,这是一个交互式Node.js教程 编写一个程序,接受一个或多个数字作为命令行参数,并将这些数字的总和打印到控制台(stdout)。 因为我以前就知道JavaScript,所以我认为它会很简单: var sum = 0; for (var i = 2; i < process.argv.length; i++) { console.log('Adding ' + process.argv[i]); sum += Number(p

我正在学习“LearnyYouNode”的婴儿步骤部分,这是一个交互式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)

这是怎么回事?我在Windows 7上使用Node.js v0.10.34。

运行功能中的
learnyonode
提供了自己的参数(您不知道),而没有被要求提供,并且忽略了您自己的参数

您应该像下面这样运行文件,调用好的ol'节点可执行文件:

node baby_steps.js
而不是调用learnyounode可执行文件:

learnyounode run baby_steps.js

请注意,验证程序预期的是非确定性值。。。 也许这个练习只是想使用输入作为向量索引号(方向) 不管它本身的价值

这些数字看起来不确定的原因可能是argvs[]vector用于携带环境的非静态值(也可以在索引0上运行node)

记住,learnyounode run函数通过随机输入为您提供一个测试环境

无论如何,Github上有一个很棒的演练:


我很确定您至少希望使用
parseInt(process.argv[I],10)
,而不是
Number()
,以确保正确转换数字。话虽如此:我无法复制这一点。将代码复制粘贴到
test.js
中,并在节点10.32上运行,效果很好。@Mike'Pomax'Kamermans:我在问题描述中遗漏了这一点:“还要注意process.argv的所有元素都是字符串,您可能需要将它们强制为数字。您可以通过在属性前面加上+或将其传递给Number()来完成此操作。”例如+process.argv[2]或Number(process.argv[2])。这两种方法在理论上都是可能的,但也都是利用JavaScript中的隐式行为的黑客。JS具有parseInt和parseFloat函数,专门用于执行可靠的字符串到数字的转换。要想知道发生了什么,首先计算,然后记录,然后添加:
for(var i=2,last=process.argv.length,v,p;i@Mike“Pomax”Kamermans:用输入10、20和30运行您的示例打印16、49、49和34,这相当令人惊讶。您使用的是哪个版本的node.js?哈,这太不可思议了。谢谢!
learnyounode run baby_steps.js