javascript - 无法将对象推送到数组

标签 javascript arrays

我有这个简单的代码

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/

相关文章:

javascript - Sass 加载器和 webpack 4

javascript - 在预检请求中不收到 http 403 的情况下通过 AJAX 访问 Genius API 的正确方法是什么?

Java使用嵌套循环打印数组

JavaScript 和 Node.js - Controller 函数中的 JSON 字符串不正确

c - 在纯 C 中传递二维数组

c# - 字节数组到位图图像

c# - 显示从字节数组到 c# winforms 的 pdf

javascript - 使用括号 () 之后我的函数没有运行?

javascript - 使用 jquery 在 DOM 中查找位于单击元素之前的元素

javascript - nodejs 比较 Unicode 文件名