devicescript icon indicating copy to clipboard operation
devicescript copied to clipboard

nested closures / closures in loops

Open mmoskal opened this issue 2 years ago • 0 comments

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).

mmoskal avatar Apr 11 '23 21:04 mmoskal