Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 命令行顺序什么时候重要?_Javascript_Algorithm_Command Line - Fatal编程技术网

Javascript 命令行顺序什么时候重要?

Javascript 命令行顺序什么时候重要?,javascript,algorithm,command-line,Javascript,Algorithm,Command Line,我是新的编码,所以如果我使用了错误的术语,我表示歉意(请纠正我)。我正在进行以下编码挑战:给定一个具有多个值的数组,编写一个函数,返回一个只包含原始数组的最大值、最小值和平均值的新数组 这是我第一次尝试时想到的代码: 最后,通过反复试验,我发现问题在于新变量的位置。我还修正了平均表达式,正确的算法是: 我假设,由于最大值、最小值和平均值都在变化(有更好的术语吗?),var arrnew将拾取这些新值,但显然情况并非如此。我想我的问题是什么时候行顺序重要?或者更具体地说,是否有一些简单的规则或原

我是新的编码,所以如果我使用了错误的术语,我表示歉意(请纠正我)。我正在进行以下编码挑战:给定一个具有多个值的数组,编写一个函数,返回一个只包含原始数组的最大值、最小值和平均值的新数组

这是我第一次尝试时想到的代码:

最后,通过反复试验,我发现问题在于新变量的位置。我还修正了平均表达式,正确的算法是:

我假设,由于最大值、最小值和平均值都在变化(有更好的术语吗?),var arrnew将拾取这些新值,但显然情况并非如此。我想我的问题是什么时候行顺序重要?或者更具体地说,是否有一些简单的规则或原则可以帮助我更好地理解命令行编码(我不知道这是否叫做命令行编码)


谢谢

这是因为编译器的缘故,编译器将始终从上到下运行,因此请始终尝试按顺序构造代码。

执行此操作时:

var arrnew = [max, min, avg];
这会将
max
min
avg
的内容副本放入数组中。未来对
max
min
avg
所包含内容的更改不会以任何方式影响阵列

所以,如果你这样做

var max = 3, min = 1, avg = 2;
var arrnew = [max, min, avg];    // 3, 1, 2
max = 5;
console.log(arrnew);             // 3, 1, 2

注意,
arrnew
的内容完全不受
max
min
avg
所包含内容的后续更改的影响。这就是Javascript(以及大多数语言)的工作方式。

您的解决方案很好,但不确定您问了些什么。命令行与Javascript有什么关系?JavaScript在浏览器中,命令行在机器上。数组是用这些初始值创建的,不会随着数组中的值的更改而更改。@AndrewL。他们不知道正确的术语,所以试着猜测一下。(参见问题的最后一句话)@zerkms为OP指出,这样他/她就可以在堆栈溢出时在此处进行适当编辑,与问题相关的代码必须复制到问题本身,而不仅仅是通过外部链接。这是因为外部链接有被改变或停止工作的倾向,使得这个问题对于未来的读者来说毫无用处。所以大多数语言不会对变量进行重新编译(这个词对吗?)?如中所述,一旦记录了值(如arrnew),对最大值、最小值、平均值的任何后续更改都不会覆盖原始值,因为它已经“锁定”?@Dinamo788-通常,语言具有赋值和引用/指针。赋值将一个值从一个地方复制到另一个地方,一旦被复制,它就是它自己的数据副本-完全独立于原始数据。这就是你在这里所做的。@Dinamo788-如果你想更多地了解这个概念,你可以阅读这篇文章,我一直在研究深度复制和浅层复制,虽然它仍然有点混乱,但我的例子是深度复制吗?因为最大/最小/平均值被复制到arrnew的新目标,因此在更改原始值时不会更改?如果这是一个浅拷贝,那么线路顺序是否无关紧要,因为arrnew将引用max/min/avg的原始目的地?所有的js都是在深度复制的基础上运行的还是我怎么知道的?@Dinamo788-你的例子只是一个简单的变量赋值。我甚至不认为这是肤浅的复制。深度和浅层复制是指在Javascript中复制数组或对象。深度副本递归地复制甚至嵌入的对象,而浅层副本只分配(而不是复制)嵌入的对象。深层或浅层复制都不能解决这类问题。好的,所以编译器不会重新编译任何东西,除非有更改变量值的操作。谢谢