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

时间:2019-09-05 02:50:08

标签: javascript arrays object referenceerror

当我使用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>

通常,它只是循环遍历,但是现在抛出一个错误。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

guard let pages = content.allpages?.pages?.compactMap{ $0.page?.html }, titles = content.allpages?.pages?.compactMap{ $0.page?.title } else {return} use strict mode automatically的脚本。因此,由于type="module"在使用前未定义,因此会出现参考错误。

显然,解决方法是确保定义了pti。您可以在pti循环中将其声明为变量,但是在启动for.. in循环之前必须先声明它,因为后者的语法在控制结构中不支持变量定义。

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

答案 1 :(得分:1)

也许缺少pti声明

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

答案 2 :(得分:0)

您可以在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