RESOLVED WORKSFORME238149
Variable in top level block scope is incorrectly captured
https://bugs.webkit.org/show_bug.cgi?id=238149
Summary Variable in top level block scope is incorrectly captured
neildhar
Reported 2022-03-21 12:02:05 PDT
For the following snippet placed at the top level: do { let w = "banana"; function foo(){ w = "bar"; } foo(); console.log(w); } while(0) JSC prints "banana", instead of "bar".
Attachments
Radar WebKit Bug Importer
Comment 1 2022-03-22 09:07:31 PDT
Jarred Sumner
Comment 2 2022-05-22 02:35:05 PDT
This seems to only happen when strict mode is off. The following code doesn't reproduce the issue in jsc shell: "use strict"; do { let w = "banana"; function foo() { w = "bar"; } foo(); print(w); } while (0); But this code does: do { let w = "banana"; function foo() { w = "bar"; } foo(); print(w); } while (0);
uncomment
Comment 3 2024-02-24 00:55:46 PST
The variable is not even visible within the function: do { let w = "banana"; function foo(){ console.log(w); } foo(); } while(0) Result (unexpected): ReferenceError: Can't find variable: w Unlike with arrow function: do { let w = "banana"; foo=()=>{ console.log(w); }; foo(); } while(0) Result (as expected): banana
Yusuke Suzuki
Comment 4 2025-05-23 17:22:24 PDT
Now function declaration with the scope is implemented (instead of function statement). So it is fixed.
Note You need to log in before you can comment on or make changes to this bug.