Nest函数更新全局变量Javascript

我想知道为什么全局变量x和y没有从while循环中的函数“move”更新。谁能解释一下为什么这不起作用以及我应该如何解决它?


var x = 10;

var y = 7;

var destX = 5;

var destY = 5;


function simulate(x, y) {

    while (x !== destX && y !== destY) {

        move(x, y);

    }

    console.log("arrived")

}


function move(x, y) {

        if (y !== destY) {

            if (destY > y) {

                y = y + 1;

            } else {

                y = y - 1;

            }

        } else {

            if (destX > x) {

                x = x + 1;

            } else {

                x = x - 1;

            }

        }

}


simulate(x, y);


牧羊人nacy
浏览 110回答 1
1回答

慕容708150

该函数的参数也被命名为x和y,因此它们隐藏了全局变量。在这种特殊情况下,您似乎只想使用全局变量,因此您可以简单地从两个函数中删除参数。var x = 10;var y = 7;var destX = 5;var destY = 5;function simulate() {    while (x !== destX && y !== destY) {        move();    }    console.log("arrived")}function move() {        if (x !== destX) {            if (destY > y) {                y = y + 1;            } else {                y = y - 1;            }        } else {            if (destX > x) {                x = x + 1;            } else {                x = x - 1;            }        }}simulate();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript