我有这个简单的代码
let pathFinder = (entranceX, entranceY, grid) => {
let distanceFromTop = entranceX;
let distanceFromLeft = entranceY;
let location = {
distanceFromTop: distanceFromTop,
distanceFromLeft: distanceFromLeft,
path: [],
status: 'Start'
}
console.log('start', location)
let queue = [];
queue.push(location);
console.log('queue', queue)
}
我确保“位置”不为空,它在控制台中显示得很好:
“开始{distanceFromTop:1,distanceFromLeft:0,路径:Array(0),状态:“开始”}”
但是当我想将它添加到队列中时,我最终得到的东西看起来不像空数组,但长度为 0
“队列[{…}] 长度:0"
我错过了一些明显的东西吗?尝试通过队列[位置]添加它,但它也不起作用
最佳答案
你应该检查一下 let 和 var 之间的区别
var pathFinder = (entranceX, entranceY, grid) => {
var distanceFromTop = entranceX;
var distanceFromLeft = entranceY;
let location = {
distanceFromTop: distanceFromTop,
distanceFromLeft: distanceFromLeft,
path: [],
status: 'Start'
}
console.log('start', location)
var queue = [];
queue.push(location);
console.log('queue', queue)
}
Let 只能在声明它的作用域 block 中使用,而 var 则在声明它的整个函数中或全局使用。将前三个(函数和两个距离以及队列)变量更改为 var 应该可以解决这个问题。如果不改变它们,肯定会改变。
关于javascript - 无法将对象推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50543589/