WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED WORKSFORME
238149
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
Add attachment
proposed patch, testcase, etc.
Radar WebKit Bug Importer
Comment 1
2022-03-22 09:07:31 PDT
<
rdar://problem/90639204
>
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.
Top of Page
Format For Printing
XML
Clone This Bug