Javascript的右手值会在循环中自行更改吗?

亚瑟恩

我编写了一个代码来使WebGL中的3D眼睛动起来。我不明白的是,为什么Javascript中的右手值可以循环更改。以下是部分代码:

function start() {
    ...
    if (GL) {
        ...
        tick();                       // For animation
    }
}

function tick() {
    requestAnimationFrame(tick);
    updateTime();
    drawScene();
}

function updateTime() {
    curTime = (new Date).getTime();
    if (lastTime) {                                 // Initial value: lastTime = 0
        var delta = curTime - lastTime;
        eyeFrame = Math.round((delta%60000)/20);    // Initial value: eyeFrame = 0
    } else {
        lastTime = curTime;
    }
}

function drawScene() {
    updateBuffers(eyeFrame);
    ...
}

function updateBuffers(idx) {
    curV = V;                         // V is the 3D coordinates, must not change
    for (i=0; i<2; i++) {
        for (j=0; j<329; j++) {
            curV[i][3*j] += (xEyes[i][4*j]*eyeMov[idx][0]+xEyes[i][4*j+1]*eyeMov[idx][1]+xEyes[i][4*j+2]*eyeMov[idx][2]+xEyes[i][4*j+3]*eyeMov[idx][3]);
            curV[i][3*j+1] += (yEyes[i][4*j]*eyeMov[idx][0]+yEyes[i][4*j+1]*eyeMov[idx][1]+yEyes[i][4*j+2]*eyeMov[idx][2]+yEyes[i][4*j+3]*eyeMov[idx][3]);
            curV[i][3*j+2] += (zEyes[i][4*j]*eyeMov[idx][0]+zEyes[i][4*j+1]*eyeMov[idx][1]+zEyes[i][4*j+2]*eyeMov[idx][2]+zEyes[i][4*j+3]*eyeMov[idx][3]);
        }
    }
    ...
}

的值VxEyesyEyeszEyeseyeMov从文件中读取。我遇到的问题是从第二次访问到变化updateBuffers()的价值V但是V等式左侧的代码中没有任何地方任何建议如何解决这个问题?

magyar1984

将旧数组的每个属性复制到for循环中的某个新数组

    var curV = [];
    for (var i=0, vl = V.length; i<vl ; i+=1) {
        curV[i] = V[i];
    }

如果您需要经常执行此操作,请将其概括为一个函数,该函数将返回array的副本。您还可以使用切片方法,如下所述。

JavaScript知道两种日期类型-基本类型(字符串,布尔值,数字,未定义,空值)和引用类型(对象)。原始类型“保持”其值,引用类型只是“指针”指向内存中的其他位置。当您使用基本类型时,您将使用(恒定大小)值,当您使用引用时,您将使用指针(因为对象大小可能会有所不同)。

这就是为什么您不能直接复制数组。因为您只复制了指针,而不是值。

切片和for循环副本返回浅表副本-任何引用类型都将再次被引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript的右手值会在循环中自行更改?

来自分类Dev

除非我将数组声明为具有相同内容的新数组,否则该数组会在while循环中自行更改

来自分类Dev

Python SQLite。LIMIT 变量不会在循环中更改值

来自分类Dev

Javascript在While循环中更改数组中的值

来自分类Dev

在foreach循环中使用PHP更改外部Javascript的值

来自分类Dev

JavaScript:在 while 循环中更改对象中的值

来自分类Dev

java在for循环中更改值

来自分类Dev

Python 会在每个循环中执行我的方法吗?

来自分类Dev

如果从python中的另一个函数调用,则if语句的值不会在循环中更改

来自分类Dev

无法在For循环中更改字典的值?

来自分类Dev

更改范围(“等等”)。行循环中的值

来自分类Dev

变量在循环内自行更改

来自分类Dev

在Go模板范围循环中,每次循环都会在循环外部声明的变量重置吗?

来自分类Dev

JavaScript手风琴-for循环中for循环的问题

来自分类Dev

用于从右手边开始循环的C编程

来自分类Dev

从for循环中的javascript中选择值

来自分类Dev

在for循环中交换整数数组值-有可能吗?

来自分类Dev

更改for循环中的步骤

来自分类Dev

变量在循环中更改

来自分类Dev

如果for循环中发生错误,如何更改值?

来自分类Dev

使用python在for循环中更改图像的颜色值

来自分类Dev

等待json文件中的布尔值在循环中更改

来自分类Dev

在嵌套循环中更改静态类变量的值

来自分类Dev

在foreach循环中更改的数组值不粘滞

来自分类Dev

在循环中更改img src属性值-jQuery

来自分类Dev

在循环中更改随机数数组中的值

来自分类Dev

Redis EXPIREAT会在GET上自行删除吗?

来自分类Dev

在循环中更改For循环的长度

来自分类Dev

Redux状态会在路由更改时自行重置(我认为)

Related 相关文章

  1. 1

    Javascript的右手值会在循环中自行更改?

  2. 2

    除非我将数组声明为具有相同内容的新数组,否则该数组会在while循环中自行更改

  3. 3

    Python SQLite。LIMIT 变量不会在循环中更改值

  4. 4

    Javascript在While循环中更改数组中的值

  5. 5

    在foreach循环中使用PHP更改外部Javascript的值

  6. 6

    JavaScript:在 while 循环中更改对象中的值

  7. 7

    java在for循环中更改值

  8. 8

    Python 会在每个循环中执行我的方法吗?

  9. 9

    如果从python中的另一个函数调用,则if语句的值不会在循环中更改

  10. 10

    无法在For循环中更改字典的值?

  11. 11

    更改范围(“等等”)。行循环中的值

  12. 12

    变量在循环内自行更改

  13. 13

    在Go模板范围循环中,每次循环都会在循环外部声明的变量重置吗?

  14. 14

    JavaScript手风琴-for循环中for循环的问题

  15. 15

    用于从右手边开始循环的C编程

  16. 16

    从for循环中的javascript中选择值

  17. 17

    在for循环中交换整数数组值-有可能吗?

  18. 18

    更改for循环中的步骤

  19. 19

    变量在循环中更改

  20. 20

    如果for循环中发生错误,如何更改值?

  21. 21

    使用python在for循环中更改图像的颜色值

  22. 22

    等待json文件中的布尔值在循环中更改

  23. 23

    在嵌套循环中更改静态类变量的值

  24. 24

    在foreach循环中更改的数组值不粘滞

  25. 25

    在循环中更改img src属性值-jQuery

  26. 26

    在循环中更改随机数数组中的值

  27. 27

    Redis EXPIREAT会在GET上自行删除吗?

  28. 28

    在循环中更改For循环的长度

  29. 29

    Redux状态会在路由更改时自行重置(我认为)

热门标签

归档