javascript - 嵌套函数更新全局变量Javascript
问题描述
我想知道为什么全局变量x
并y
没有从while
循环中的函数“移动”更新。谁能解释为什么这不起作用以及我应该如何解决它?
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);
解决方案
函数的参数也被命名为x
and 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();
推荐阅读
- jenkins - Jenkins在选择参数中包含文件参数和字符串参数
- javascript - javascript多维数组过滤元素
- python - 成功创建超级用户后无法登录 Heroku 管理面板
- javascript - 如何在不刷新页面的情况下打开链接
- android - 反应原生加载图像并存储在设备中?
- python - Azure Function:如何使用本地调试模式和使用 Python 的 Azure Functions 将我的日志写入 Azure Application Insights?
- flutter - 如何在屏幕尺寸大时从appbar中删除抽屉图标并在屏幕尺寸较小时显示它 | 颤振网络
- python - 一个非常简单的基于 YOUTUBE-DL 的程序
- reactjs - 如何在 React.js 的 redoc 侧边栏中自定义和添加选项
- asp.net-core - IIS - .NET Core api 部署时未启动