Javascript 条件in-for循环行为异常

Javascript 条件in-for循环行为异常,javascript,for-loop,conditional,Javascript,For Loop,Conditional,我认为这应该很简单,但不知何故,我不明白我做错了什么 我有以下代码: var currentPosition = { x:10000, y:10000 }; var directions = "v>v<"; var housesVisited = [{x:10000, y:10000}]; function createHouseCoordinates(data){ for(var x = 0; x<4; x++){ if(data[

我认为这应该很简单,但不知何故,我不明白我做错了什么

我有以下代码:

var currentPosition = {
    x:10000,
    y:10000
};

var directions = "v>v<";
var housesVisited = [{x:10000, y:10000}];

function createHouseCoordinates(data){
    for(var x = 0; x<4; x++){
        if(data[x]=="^"){
           currentPosition.x += 1;  
        } else if(data[x]=="v"){
           currentPosition.x -= 1;
        } else if(data[x]==">"){
           currentPosition.y += 1;
        } else if(data[x]=="<"){
           currentPosition.y -= 1;  
        }
    housesVisited.push(currentPosition);
    }
}

createHouseCoordinates(directions);
console.log(housesVisited);
我期待着:

[ { x: 10000, y: 10000 },
{ x: 9999, y: 10000 },
{ x: 9999, y: 10001 },
{ x: 9998, y: 10001 },
{ x: 9998, y: 10000 } ]
我做错了什么?为了更好地理解这一点,我应该读些什么。。?
提前谢谢

currentPosition
是一个对象。当您对它进行更改时(例如
currentPosition.x+=1
),您总是在更改同一个对象

然后将其推入一个数组,但实际上所推入的是对该对象的引用,因此数组的所有元素都指向同一个底层对象

要修复代码,需要在将对象信息推入阵列时将其克隆到新对象中:

housesVisited.push({x: currentPosition.x, y: currentPosition.y});

非常感谢!没错,我没看见。
housesVisited.push({x: currentPosition.x, y: currentPosition.y});