如何在 for..in 循环中修复 "Uncaught ReferenceError"

How to fix "Uncaught ReferenceError" in a for..in loop

当我使用 for..of 循环时,当我尝试 运行 时,迭代器值抛出 "ReferenceError"。

我试过将 for...of 循环更改为 for...in 循环,但无济于事。我怀疑它与标记为模块的脚本有关,或者它可能是我的 utils.js 文件,但我删除了它们并且我仍然得到相同的服务器。我在 Windows 10.Chrome 76 上收到此错误。

代码如下:

<body>
    <canvas id="canvas" width="800" height="600">
        Bruh. are you using IE?!
    </canvas>
    <script type="module">
        import { Mouse, Screen } from "./utils.js"

        let attractionForce = 1;
        let friction = 0.99;

        let canvas = document.getElementById("canvas");
        let ctx = canvas.getContext("2d");
        //let mouse = new Mouse(canvas);
        const PI_2 = Math.PI * 2;

        var points = Array.from({ length: 1000 }, () => ({
            x: Math.random() * 800,
            y: Math.random() * 600,
            dx: (Math.random() - 0.5),
            dy: (Math.random() - 0.5),
        }));

        for (pti of points) console.log(pti); << Uncaught ReferenceError: pti is not defined
    </script>
</body>

通常情况下,它只会遍历循环,但现在会抛出错误。任何帮助将不胜感激!

可能缺少 pti 声明

尝试将 for (pti of points) console.log(pti); 更改为 for (let pti of points) console.log(pti);

您可以在 chrome 开发工具

中尝试此代码
 var points = Array.from({ length: 1 }, () => ({
     x: Math.random() * 800,
     y: Math.random() * 600,
     dx: (Math.random() - 0.5),
     dy: (Math.random() - 0.5),
 }));

enter image description here

没有钥匙pti

type="module"use strict mode automatically 的脚本。因此,因为 pti 在使用前没有定义,所以你会得到引用错误。

显然,解决方法是确保 pti 已定义。可以在for.. in循环中声明为变量,但必须在for...of循环开始前声明,因为后者的语法不支持控制结构中的变量定义[=16] =]

模块类型脚本元素外部的代码评估不会在不调用严格模式的情况下重现错误。