Javascript:关于在函数之间传递数组作为参数的说明

Javascript:关于在函数之间传递数组作为参数的说明,javascript,arrays,Javascript,Arrays,我的代码有两个函数,它们将数组传递给另一个函数。第一次执行时,它工作,第二次不工作 第一次(较大函数的片段): 等等。到目前为止一切都很好。稍后在该函数中,我调用 segmentConstruction(multipointCoords); 然后 function segmentConstruction(multipointCoords) { length = multipointCoords[0].length; i

我的代码有两个函数,它们将数组传递给另一个函数。第一次执行时,它工作,第二次不工作

第一次(较大函数的片段):

等等。到目前为止一切都很好。稍后在该函数中,我调用

       segmentConstruction(multipointCoords);
然后

      function segmentConstruction(multipointCoords) {
            length = multipointCoords[0].length;

            if (i < length) {
                var timer;

                prevCoord = ol.proj.fromLonLat(multipointCoords[0][i - 1]);
                currCoord = ol.proj.fromLonLat(multipointCoords[0][i]);
                ...
我确实读过这篇文章,但我不理解传递引用和传递值之间的区别

根据,可以传递数组


编辑数组是二维的,因为它们是[lon,lat]的数组。

维度无关。但是,您在循环中执行异步操作不会因为您在循环中执行异步操作而停止。如果for循环中的所有变量都是用
let
定义的,则问题可能会消失,但是,并非所有浏览器都支持这一点。这里的问题是将回调传递给。done关闭
coords
变量,并将其值传递给下一个函数,该函数是对for循环上一次迭代中定义的数组的引用。然后,每次调用.done回调时,对于每次迭代,它们都作用于相同的数组,即上次迭代中创建的数组。这肯定会导致意外的结果,甚至可能是您遇到的错误。@DaveNewton关于coords变量的“closes”是什么意思?我在makeTrack函数中没有得到任何错误或意外的结果,除了我在这里提出的问题:即使我可以在makeTrack函数中使用coords/multipointCoords数组,我也不能将它从那里传递到另一个函数(分段构造)。呃,你可以在coords var语句周围输入“closes”,这真的不重要。重要的是,它在for循环完成后访问该变量的值。它将包含在上一次迭代中为所有完成的回调生成的数组。每个回调不会有自己的数组。
       segmentConstruction(multipointCoords);
      function segmentConstruction(multipointCoords) {
            length = multipointCoords[0].length;

            if (i < length) {
                var timer;

                prevCoord = ol.proj.fromLonLat(multipointCoords[0][i - 1]);
                currCoord = ol.proj.fromLonLat(multipointCoords[0][i]);
                ...
TypeError: multipointCoords[0] is undefined