microsoft / devicescript

TypeScript for Tiny IoT Devices (ESP32, RP2040, ...)
https://microsoft.github.io/devicescript/
MIT License
3.28k stars 119 forks source link

nested closures / closures in loops #340

Open mmoskal opened 1 year ago

mmoskal commented 1 year ago

Variables don't get separate closures for each loop iteration. The compiler complains. For example:

const fns: any[] = []
let glb1 = 0
for (let k of [300, 20, 1]) {
    const kk = k
    fns.push(qux2)
    function qux2() {
        glb1 += kk
    }
}
for (let f of fns) f()
assert(glb1 === 321)

(see 13actions.ts test case).