gpt4 book ai didi

javascript - 为什么我的函数的值不更新我的对象的值

转载 作者:行者123 更新时间:2023-11-30 13:54:21 26 4
gpt4 key购买 nike

我正在做一个关于火星漫游者的练习,我有一个物体漫游者,它的属性是方向,默认值为“N”(北),他需要先转弯才能前进,这意味着如果漫游者想要向左移动,它的第一步必须是一个转身,然后是向前迈出的一步。当我将函数运行到 moveLeft(rover) 结果如预期的那样。他变得完美了!!但是属性方向的值永远不会更新,我需要将这个值更新到下一步......我将粘贴我的代码的一部分。谢谢!

  direction: 'E',
x: 0,
y: 0,
path: { x: 0, y: 0 },
travelLog: []
}
var move = rover.direction

function moveLeft (who) {
console.log(`Rover is facing ${move}`)
switch (move) {
case 'N':
move = 'W'
console.log(`Rover is facing now ${move}`)
break;
case 'W':
move = 'S'
console.log(`Rover is facing now ${move}`)
break;
case 'S':
move = 'E'
console.log(`Rover is facing now ${move}`)
break;
case 'E':
move = 'N'
console.log(`Rover is facing now ${move}`)
break;
default:
console.log(`Please insert the correct directions`)
}
console.log('turnLeft was called!')
}

这是我的输出

Rover is facing E
Rover is facing now N
turnLeft was called!

console.log(rover)
{direction: "E", x: 0, y: 0, path: {…}, travelLog: Array(0)}

console.log(move)
W

console.log(rover.direction)
E

I expect the output of rover.direction to be the same of move

最佳答案

这一行:

var move = rover.direction

正在将rover.direction 复制到名为move 的变量中,它不会创建对rover 的引用。方向。当你做这样的事情时:

move = 'W'

它只更新move变量,更新rover.direction

要解决这个问题,您可以添加一行:

rover.direction = move;

在您的 switch 语句之后,或者您可以摆脱 move 变量并直接在 rover.direction 上工作。

此外,一些注意事项/建议:

  1. 您在 moveLeft 函数之外定义了 move。除了全局 rover 变量之外,这还创建了另一个全局变量。通常,您希望将全局变量的数量限制为尽可能少。

  2. 您的 moveLeft 函数采用您当前未在该函数中使用的 who 参数。根据您的描述,您似乎打算在该参数中传递 rover 变量。在这种情况下,您可能希望删除所有对 move 的引用,并只在您的函数中使用 who.direction

关于javascript - 为什么我的函数的值不更新我的对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com