当我使用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>
通常,它只是循环遍历,但是现在抛出一个错误。任何帮助将不胜感激!
答案 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),
}));
无键pti