SyntaxError: 'with' statements are not valid in strict mode
-
29-06-2021 - |
質問
I'm getting this error in safari console when I try to do anything from a breakpoint. Bug report here: https://bugs.webkit.org/show_bug.cgi?id=83267
Does anyone have a workaround? For reasons that I am assuming are related to this javascript has ceased to run on my site in safari.
edit: the bug report also contains repro steps.
another edit: I'm not using a "with" statement. This is a bug from the safari console.
解決
The with(obj) {}
statement is deprecated, and as such, is not valid in strict mode.
To solve this, either disable strict mode, or stop using with statements!
他のヒント
Strict mode in ECMAScript 5 bans eg. with
statement. You have two choices:
- disable strict mode (remove
"strict mode";
line from the file / function), or - (preferred) avoid using
with
statements - they are harmful and totally unreadable.
More on strict mode from John Resig: ECMAScript 5 Strict Mode, JSON, and More.
You can read in the article, that strict mode:
- makes you unable to
delete
variable (like indelete foo;
), - limits usage of
eval
, - adds some limitations to functions (eg. accessing
caller
andcallee
), - removes
with
statements,