From 62262aeda884629e47cb2d62315d6d353d27f0f5 Mon Sep 17 00:00:00 2001 From: MDN Web Docs GitHub Bot <108879845+mdn-bot@users.noreply.github.com> Date: Sat, 13 Jul 2024 04:56:59 +0200 Subject: [PATCH] [zh-cn] sync translated content (#22373) Co-authored-by: Allo --- files/zh-cn/_redirects.txt | 5 +- files/zh-cn/_wikihistory.json | 26 ++---- .../first_steps/what_went_wrong/index.md | 32 ++----- files/zh-cn/web/http/headers/index.md | 2 - .../http/headers/large-allocation/index.md | 77 ---------------- .../errors/deprecated_octal/index.md | 64 -------------- .../errors/deprecated_octal_literal/index.md | 54 ++++++++++++ .../reference/errors/equal_as_assign/index.md | 54 ------------ .../index.md | 87 ------------------- .../index.md | 8 +- .../reference/errors/undefined_prop/index.md | 58 ------------- .../errors/unexpected_token/index.md | 25 ++++-- 12 files changed, 90 insertions(+), 402 deletions(-) delete mode 100644 files/zh-cn/web/http/headers/large-allocation/index.md delete mode 100644 files/zh-cn/web/javascript/reference/errors/deprecated_octal/index.md create mode 100644 files/zh-cn/web/javascript/reference/errors/deprecated_octal_literal/index.md delete mode 100644 files/zh-cn/web/javascript/reference/errors/equal_as_assign/index.md delete mode 100644 files/zh-cn/web/javascript/reference/errors/missing_semicolon_before_statement/index.md rename files/zh-cn/web/javascript/reference/errors/{unterminated_string_literal => string_literal_eol}/index.md (88%) delete mode 100644 files/zh-cn/web/javascript/reference/errors/undefined_prop/index.md diff --git a/files/zh-cn/_redirects.txt b/files/zh-cn/_redirects.txt index 10880690a5d6aa..9b26dc2a3b426f 100644 --- a/files/zh-cn/_redirects.txt +++ b/files/zh-cn/_redirects.txt @@ -2525,14 +2525,17 @@ /zh-CN/docs/Web/JavaScript/Reference/Date/toJSON /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON /zh-CN/docs/Web/JavaScript/Reference/Date/valueOf /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf /zh-CN/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol /zh-CN/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features -/zh-CN/docs/Web/JavaScript/Reference/Errors/Bad_octal /zh-CN/docs/Web/JavaScript/Reference/Errors/Deprecated_octal +/zh-CN/docs/Web/JavaScript/Reference/Errors/Bad_octal /zh-CN/docs/Web/JavaScript/Reference/Errors/Deprecated_octal_literal /zh-CN/docs/Web/JavaScript/Reference/Errors/Bad_return_or_yield /zh-CN/docs/Web/JavaScript/Reference/Errors/Bad_return /zh-CN/docs/Web/JavaScript/Reference/Errors/Cant_access_property /zh-CN/docs/Web/JavaScript/Reference/Errors/Unexpected_type /zh-CN/docs/Web/JavaScript/Reference/Errors/Deprecated_String_generics /zh-CN/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features /zh-CN/docs/Web/JavaScript/Reference/Errors/Deprecated_expression_closures /zh-CN/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/zh-CN/docs/Web/JavaScript/Reference/Errors/Deprecated_octal /zh-CN/docs/Web/JavaScript/Reference/Errors/Deprecated_octal_literal /zh-CN/docs/Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat /zh-CN/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features /zh-CN/docs/Web/JavaScript/Reference/Errors/Malformed_formal_parameter /zh-CN/docs/Web/JavaScript/Reference/Errors/Missing_formal_parameter +/zh-CN/docs/Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement /zh-CN/docs/Web/JavaScript/Reference/Errors/Unexpected_token /zh-CN/docs/Web/JavaScript/Reference/Errors/Not_a_codepoint /zh-CN/docs/Web/JavaScript/Reference/Errors/Not_a_valid_code_point +/zh-CN/docs/Web/JavaScript/Reference/Errors/Unterminated_string_literal /zh-CN/docs/Web/JavaScript/Reference/Errors/String_literal_EOL /zh-CN/docs/Web/JavaScript/Reference/Errors/不能添加属性 /zh-CN/docs/Web/JavaScript/Reference/Errors/Cant_assign_to_property /zh-CN/docs/Web/JavaScript/Reference/Function /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function /zh-CN/docs/Web/JavaScript/Reference/Function/apply /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply diff --git a/files/zh-cn/_wikihistory.json b/files/zh-cn/_wikihistory.json index 6ef710dc7aeca6..b24619f86166a3 100644 --- a/files/zh-cn/_wikihistory.json +++ b/files/zh-cn/_wikihistory.json @@ -23067,10 +23067,6 @@ "modified": "2020-10-15T21:55:00.550Z", "contributors": ["zhangchen", "WayneCui"] }, - "Web/HTTP/Headers/Large-Allocation": { - "modified": "2020-10-15T21:56:09.177Z", - "contributors": ["wyapx", "crper", "shevacjs"] - }, "Web/HTTP/Headers/Last-Modified": { "modified": "2020-10-15T21:55:00.234Z", "contributors": ["WayneCui"] @@ -24991,7 +24987,7 @@ "modified": "2020-03-12T19:45:21.241Z", "contributors": ["Ende93"] }, - "Web/JavaScript/Reference/Errors/Deprecated_octal": { + "Web/JavaScript/Reference/Errors/Deprecated_octal_literal": { "modified": "2020-03-12T19:46:39.086Z", "contributors": ["WayneCui"] }, @@ -24999,10 +24995,6 @@ "modified": "2020-03-12T19:45:31.617Z", "contributors": ["Kaede_Shinoda", "Ende93"] }, - "Web/JavaScript/Reference/Errors/Equal_as_assign": { - "modified": "2020-03-12T19:44:21.268Z", - "contributors": ["niaodan2b"] - }, "Web/JavaScript/Reference/Errors/Getter_only": { "modified": "2020-03-12T19:46:35.397Z", "contributors": ["WayneCui"] @@ -25083,10 +25075,6 @@ "modified": "2020-03-12T19:46:25.852Z", "contributors": ["WayneCui"] }, - "Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement": { - "modified": "2020-03-12T19:44:58.615Z", - "contributors": ["Davont", "jitingsun"] - }, "Web/JavaScript/Reference/Errors/More_arguments_needed": { "modified": "2020-03-12T19:45:18.099Z", "contributors": ["Ende93"] @@ -25163,6 +25151,10 @@ "modified": "2020-03-12T19:45:16.824Z", "contributors": ["xgqfrms-GitHub", "Ende93"] }, + "Web/JavaScript/Reference/Errors/String_literal_EOL": { + "modified": "2020-03-12T19:45:03.493Z", + "contributors": ["Ende93", "luckyG0429"] + }, "Web/JavaScript/Reference/Errors/Too_much_recursion": { "modified": "2020-03-12T19:43:57.558Z", "contributors": ["Jack-Q"] @@ -25171,10 +25163,6 @@ "modified": "2020-03-12T19:45:21.644Z", "contributors": ["Ende93"] }, - "Web/JavaScript/Reference/Errors/Undefined_prop": { - "modified": "2020-03-12T19:45:16.927Z", - "contributors": ["Ende93"] - }, "Web/JavaScript/Reference/Errors/Unexpected_token": { "modified": "2020-03-12T19:45:18.592Z", "contributors": ["Ende93"] @@ -25187,10 +25175,6 @@ "modified": "2020-03-12T19:46:23.117Z", "contributors": ["Lxio", "WayneCui"] }, - "Web/JavaScript/Reference/Errors/Unterminated_string_literal": { - "modified": "2020-03-12T19:45:03.493Z", - "contributors": ["Ende93", "luckyG0429"] - }, "Web/JavaScript/Reference/Errors/in_operator_no_object": { "modified": "2020-03-12T19:46:27.485Z", "contributors": ["WayneCui"] diff --git a/files/zh-cn/learn/javascript/first_steps/what_went_wrong/index.md b/files/zh-cn/learn/javascript/first_steps/what_went_wrong/index.md index 183b2ba3a31810..ded0c71ba65456 100644 --- a/files/zh-cn/learn/javascript/first_steps/what_went_wrong/index.md +++ b/files/zh-cn/learn/javascript/first_steps/what_went_wrong/index.md @@ -173,24 +173,6 @@ Math.floor(Math.random() * 100) + 1; 代码中还会遇到其他常见错误。本节将指出其中的大部分。 -### SyntaxError: missing ; before statement
(语法错误:语句缺少分号) - -这个错误通常意味着你漏写了一行代码最后的分号,但是此类错误有时候会更加隐蔽。例如如果我们把 `checkGuess()` 函数中的这一行 : - -```js -let userGuess = Number(guessField.value); -``` - -改成 - -```js -let userGuess === Number(guessField.value); -``` - -将抛出一个错误。因为系统认为你在做其他事情。请不要把赋值运算符(`=`,为一个变量赋值)和严格等于运算符(`===`,比较两个值是否相等,返回 `true`/`false`)弄混淆。 - -> **备注:** 此错误的更多详细信息请参考 [SyntaxError: missing ; before statement](/zh-CN/docs/Web/JavaScript/Reference/Statements) 。 - ### 不管输入什么程序总说“你猜对了!” 这是混淆赋值和严格等于运算符的又一症状。例如我们把 `checkGuess()` 里的: @@ -207,13 +189,13 @@ if (userGuess = randomNumber) { 因为条件永远返回 `true`,使得程序报告你猜对了。小心哦! -### SyntaxError: missing ) after argument list
(语法错误:参数表末尾缺少括号) +### SyntaxError: missing ) after argument list 这个很简单。通常意味着函数/方法调用后的结束括号忘写了。 > **备注:** 有关此错误的更多详细信息请参考: [SyntaxError: missing ) after argument list](/zh-CN/docs/Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list)。 -### SyntaxError: missing : after property id
(语法错误:属性 ID 后缺少冒号) +### SyntaxError: missing : after property id JavaScript 对象的形式有错时通常会导致此类错误,如果把 @@ -229,21 +211,17 @@ function checkGuess( { 浏览器会认为我们试图将函数的内容当作参数传回函数。写圆括号时要小心! -### SystaxError: missing } after function body
(语法错误:函数体末尾缺少花括号) +### SystaxError: missing } after function body 这个简单。通常意味着函数或条件结构中丢失了一个花括号。如果我们将 `checkGuess()` 函数末尾的花括号删除,就会得到这个错误。 -### SyntaxError: expected expression, got '_string_'
(语法错误:得到一个 '_string_' 而非表达式) - -或者 - -### SyntaxError: unterminated string literal
(语法错误:字符串字面量未正常结束) +### SyntaxError: expected expression, got '_string_' 或 SyntaxError: string literal contains an unescaped line break 这个错误通常意味着字符串两端的引号漏写了一个。如果你漏写了字符串开始的引号,将得到第一条出错信息,这里的 '_string'_ 将被替换为浏览器发现的意外字符。如果漏写了末尾的引号将得到第二条。 对于所有的这些错误,想想我们在实例中是如何逐步解决的。错误出现时,转到错误所在的行观察是否能发现问题所在。记住,错误不一定在那一行,错误的原因也可能和我们在上面所说的不同! -> **备注:** 有关这些错误的更多详细信息请参考:[SyntaxError: Unexpected token](/zh-CN/docs/Web/JavaScript/Reference/Errors/Unexpected_token) 以及 [SyntaxError: unterminated string literal](/zh-CN/docs/Web/JavaScript/Reference/Errors/Unterminated_string_literal)。 +> **备注:** 有关这些错误的更多详细信息请参考:[SyntaxError: Unexpected token](/zh-CN/docs/Web/JavaScript/Reference/Errors/Unexpected_token) 以及 [SyntaxError: string literal contains an unescaped line break](/zh-CN/docs/Web/JavaScript/Reference/Errors/String_literal_EOL)。 ## 小结 diff --git a/files/zh-cn/web/http/headers/index.md b/files/zh-cn/web/http/headers/index.md index 0a25c6d1221f73..6168a7dc58ee16 100644 --- a/files/zh-cn/web/http/headers/index.md +++ b/files/zh-cn/web/http/headers/index.md @@ -364,8 +364,6 @@ _[在此处](/zh-CN/docs/Glossary/CORS)了解更多关于 CORS。_ - : 包含消息发出的日期和时间。 - {{HTTPHeader("Early-Data")}} {{experimental_inline}} - : 指示请求已在 TLS 早期数据中传送。 -- {{HTTPHeader("Large-Allocation")}} {{deprecated_inline}} - - : 告诉浏览器正在加载的页面将要执行大量分配。 - {{HTTPHeader("Link")}} - : [`Link`](https://datatracker.ietf.org/doc/html/rfc5988#section-5) 实体标头字段提供了一种在 HTTP 标头中序列化一个或多个链接的方法。它在语义上等同于 HTML 的 {{HTMLElement("link")}} 元素。 - {{HTTPHeader("Push-Policy")}} {{experimental_inline}} diff --git a/files/zh-cn/web/http/headers/large-allocation/index.md b/files/zh-cn/web/http/headers/large-allocation/index.md deleted file mode 100644 index c36836c761f2d6..00000000000000 --- a/files/zh-cn/web/http/headers/large-allocation/index.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Large-Allocation -slug: Web/HTTP/Headers/Large-Allocation -l10n: - sourceCommit: 0880a90f3811475d78bc4b2c344eb4146f25f66c ---- - -{{HTTPSidebar}}{{Deprecated_Header}}{{Non-standard_header}} - -非标准的 **`Large-Allocation`** 响应标头用于告知浏览器加载该页面可能需要申请大内存块。它没有被任何当前版本的浏览器实现,但将它发送到任何浏览器都是安全的。 - -[WebAssembly](/zh-CN/docs/WebAssembly) 或者 asm.js 应用会使用大量连续的已分配内存块。例如,对于一些复杂的游戏,其申请的空间将会非常大,有时甚至会达到 1GB。`Large-Allocation` 告知浏览器其将要加载的页面可能需要申请一个大的连续内存空间,浏览器依据该标头可能会单独启动一个专有的进程用于处理该页面。 - - - - - - - - - - - - -
标头类型{{Glossary("Response header", "响应标头")}}
{{Glossary("Forbidden header name", "禁止修改的标头")}}
- -## 语法 - -```http -Large-Allocation: 0 -Large-Allocation: -``` - -## 指令 - -- `0` - - : 0 是一个特殊的值,代表分配的大小是不确定的。 -- `` - - : 预期需要申请的内存大小,以兆字节为单位。 - -## 示例 - -```http -Large-Allocation: 0 -Large-Allocation: 500 -``` - -## 排除错误 - -如果使用不当,`Large-Allocation` 标头会抛出警告或者错误信息,你可以在 [web 控制台](https://firefox-source-docs.mozilla.org/devtools-user/web_console/index.html)中查看它们。 - -- 由于存在 `Large-Allocation` 标头,当前页面会在一个新的进程加载。 - - : 该消息意味着浏览器遇到了 `Large-Allocation` 标头,并且能够在一个新的进程中重新加载页面,这个进程应该有更多的可用连续内存。 -- `Large-Allocation` 标头由非 GET 请求触发而被直接忽略。 - - : 当使用 {{HTTPMethod("POST")}} 请求加载文档时,加载目前无法被重定向到新的进程中。这个错误会在使用非 GET HTTP 方法加载带有 `Large-Allocation` 标头的文档时显示。例如,这可能是由于当前文档是通过表单提交加载的。 -- 由于存在通过框架层级或者 {{domxref("window.opener")}} 引用当前浏览上下文的窗口,`Large-Allocation` 标头被直接忽略。 - - - : 该错误意味着文档不是在用户打开的或者 noopener 打开的标签或窗口的顶层加载的。它可能在以下情况下出现: - - - 带有 `Large-Allocation` 标头的文档是在 {{HTMLElement("iframe")}} 中加载的。Firefox 目前无法将 iframe 移动到新的进程中,所以文档必须在当前进程中加载。 - - 带有 `Large-Allocation` 标头的文档是在由 {{domxref("window.open()")}}、`` 或者其他类似方法在没有设置 `rel="noopener"` 或者 `"noopener"` 特性的情况下打开的窗口中加载的。这些窗口必须与其打开的窗口保持在同一进程中,因为它们可以相互通信,这意味着我们不能允许它们切换进程。 - - 带有 `Large-Allocation` 标头的文档已经使用 {{domxref("window.open()")}}、`` 或其他类似方法在没有设置 `rel="noopener"` 或者 `"noopener"` 特性的情况下打开了另一个窗口。这与上面的原因相同,即它们可以相互通信,因此我们不能允许它们切换进程。 - -- 由于存在 `Large-Allocation` 标头,当前页面会在一个新的进程加载,然而 `Large-Allocation` 进程创建在非 Win32 平台上被禁用了。 - - : Firefox 目前仅在 32 位 Windows 构建中支持 `Large-Allocation` 标头,因为内存碎片化在 64 位构建中不是问题。如果你正在运行非 win32 版本的 Firefox,这个错误会出现。你可以在 about:config 中使用 `dom.largeAllocation.forceEnable` 布尔首选项来禁用该检查。 - -## 规范 - -现还不属于任何规范,可以通过[这篇文档](https://gist.github.com/mystor/5739e222e398efc6c29108be55eb6fe3)了解该标头的背后思想。 - -## 浏览器兼容性 - -{{Compat}} - -## 参见 - -- [WebAssembly](/zh-CN/docs/WebAssembly) diff --git a/files/zh-cn/web/javascript/reference/errors/deprecated_octal/index.md b/files/zh-cn/web/javascript/reference/errors/deprecated_octal/index.md deleted file mode 100644 index 072c2019f823a0..00000000000000 --- a/files/zh-cn/web/javascript/reference/errors/deprecated_octal/index.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: 'SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated' -slug: Web/JavaScript/Reference/Errors/Deprecated_octal ---- - -{{jsSidebar("Errors")}} - -## 错误提示 - -```plain -SyntaxError: -"0"-prefixed octal literals and octal escape sequences are deprecated; -for octal literals use the \"0o\" prefix instead -``` - -## 错误类型 - -语法错误({{jsxref("SyntaxError")}} ),只出现于[严格模式](/zh-CN/docs/Web/JavaScript/Reference/Strict_mode)下。 - -## 哪里出错了? - -八进制字面量与八进制转义序列语法已经被废弃,在严格模式下会报语法错误({{jsxref("SyntaxError")}})。在 ECMAScript 2015 及以后的规范中,标准语法是前导 0 后面跟一个大写或小写的拉丁文字母 "O" (`0o` 或 `0O)`。 - -## 示例 - -### 前导"0"形式的八进制字面量 - -```js example-bad -"use strict"; - -03; - -// SyntaxError: "0"-prefixed octal literals and octal escape sequences -// are deprecated -``` - -### 八进制转义序列 - -```js example-bad -"use strict"; - -"\251"; - -// SyntaxError: "0"-prefixed octal literals and octal escape sequences -// are deprecated -``` - -### 合法的八进制数字 - -使用前导 0 后面跟字母 "o" 或 "O" 的形式: - -```js example-good -0o3; -``` - -至于八进制转义序列,你可以使用十六进制转义序列来代替: - -```js example-good -"\xA9"; -``` - -## 参见 - -- [Lexical grammar](/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar#Octal) diff --git a/files/zh-cn/web/javascript/reference/errors/deprecated_octal_literal/index.md b/files/zh-cn/web/javascript/reference/errors/deprecated_octal_literal/index.md new file mode 100644 index 00000000000000..577d6093efaecf --- /dev/null +++ b/files/zh-cn/web/javascript/reference/errors/deprecated_octal_literal/index.md @@ -0,0 +1,54 @@ +--- +title: 'SyntaxError: "0"-prefixed octal literals are deprecated' +slug: Web/JavaScript/Reference/Errors/Deprecated_octal_literal +l10n: + sourceCommit: 4e0349ec31c38bebd56e56782170666e11ae5ad3 +--- + +{{jsSidebar("Errors")}} + +仅在 JavaScript [严格模式](/zh-CN/docs/Web/JavaScript/Reference/Strict_mode)下出现的异常“0-prefixed octal literals are deprecated; use the "0o" prefix instead”在使用了已被弃用的八进制字面量(`0` 后跟数字)时出现。 + +## 错误提示 + +```plain +SyntaxError: Octal literals are not allowed in strict mode. (V8-based) +SyntaxError: Decimals with leading zeros are not allowed in strict mode. (V8-based) +SyntaxError: Unexpected number (V8-based) +SyntaxError: "0"-prefixed octal literals are deprecated; use the "0o" prefix instead (Firefox) +SyntaxError: Decimal integer literals with a leading zero are forbidden in strict mode (Safari) +``` + +## 错误类型 + +语法错误({{jsxref("SyntaxError")}}),只出现于[严格模式](/zh-CN/docs/Web/JavaScript/Reference/Strict_mode)下。 + +## 哪里出错了? + +八进制字面量已被弃用。在十进制整数前加上 `0` 时,实际上会将其转换为八进制字面量,这可能会令人感到惊讶。标准化的语法使用前导零后跟一个小写或大写的拉丁字母“O”(`0o` 或 `0O`)。 + +前导零总是被禁止的,即使字面量不是有效的八进制字面量语法(例如字面量包含数字 `8` 或 `9`,或者有小数点)。数字字面量仅在其值为 0 时才能以 `0` 开头。 + +## 示例 + +### 前导“0”形式的八进制字面量 + +```js example-bad +"use strict"; + +03; + +// SyntaxError: "0"-prefixed octal literals are deprecated; use the "0o" prefix instead +``` + +### 有效的八进制数字 + +使用前导零后跟字母“o”或“O”: + +```js example-good +0o3; +``` + +## 参见 + +- [词法文法](/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar#八进制) diff --git a/files/zh-cn/web/javascript/reference/errors/equal_as_assign/index.md b/files/zh-cn/web/javascript/reference/errors/equal_as_assign/index.md deleted file mode 100644 index 20d07acaf719bf..00000000000000 --- a/files/zh-cn/web/javascript/reference/errors/equal_as_assign/index.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "SyntaxError: test for equality (==) mistyped as assignment (=)?" -slug: Web/JavaScript/Reference/Errors/Equal_as_assign ---- - -{{jsSidebar("Errors")}} - -## 消息 - -```plain -Warning: SyntaxError: test for equality (==) mistyped as assignment (=)? -``` - -## 错误类型 - -{{jsxref("SyntaxError")}} 只在[严格模式](/zh-CN/docs/Web/JavaScript/Reference/Strict_mode)下会出现的警告。 - -## 什么地方出错了? - -在通常期望进行相等判定(`==`)的地方出现了赋值`(=`)。为了帮助调试,JavaScript(在开启严格模式的情况下)会对这种情况进行警告。 - -## 示例 - -### 条件表达式内的赋值 - -不建议在条件表达式中(例如 [`if...else`](/zh-CN/docs/Web/JavaScript/Reference/Statements/if...else))使用简单赋值语句,因为在扫视代码的时候赋值操作与相等判定容易产生混淆。例如,不要使用以下写法: - -```js-nolint example-bad -if (x = y) { - // do the right thing -} -``` - -如果你需要在条件表达式中使用赋值语句,通常的做法是用一对括号把赋值语句包起来。例如: - -```js -if ((x = y)) { - // do the right thing -} -``` - -否则,你的本意可能是想用比较操作符(如 `==` 或 `===`): - -```js -if (x == y) { - // do the right thing -} -``` - -## 相关页面 - -- [Strict mode](/zh-CN/docs/Web/JavaScript/Reference/Strict_mode) -- [`if...else`](/zh-CN/docs/Web/JavaScript/Reference/Statements/if...else) -- [Comparison operators](/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators) diff --git a/files/zh-cn/web/javascript/reference/errors/missing_semicolon_before_statement/index.md b/files/zh-cn/web/javascript/reference/errors/missing_semicolon_before_statement/index.md deleted file mode 100644 index 1b93d2eb9b3e17..00000000000000 --- a/files/zh-cn/web/javascript/reference/errors/missing_semicolon_before_statement/index.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: "SyntaxError: missing ; before statement" -slug: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement ---- - -{{jsSidebar("Errors")}} - -## 信息 - -```plain -SyntaxError: Expected ';' (Edge) -``` - -```plain - SyntaxError: missing ; before statement (Firefox) -``` - -## 错误类型 - -{{jsxref("SyntaxError")}}. - -## 哪里出错了? - -某个地方丢失了一个 (`;`)。 [JavaScript 语句](/zh-CN/docs/Web/JavaScript/Reference/Statements)必须以分号结束。有一些是由 [自动分号插入 (ASI)](/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion) 的使用所影响到的,但在这种情况下,你需要提供一个分号,以便于 JavaScript 可以将源代码解析正确。然而,通常情况下,这个错误只是另一个错误一个导致的,如不正确转义字符串,使用 var 的错误。你也可能有太多的括号的地方。当出现此错误时,仔细检查语法。 - -## 示例 - -转义字符串 - -这个错误可能发生不正确时容易转义字符串 JavaScript 引擎是希望你的字符串的末尾已经。例如: - -```js example-bad -var foo = 'Tom's bar'; -// SyntaxError: missing ; before statement -``` - -你可以用双引号,或者用\转义: - -```js-nolint example-good -var foo = "Tom's bar"; -var foo = 'Tom\'s bar'; -``` - -### 用 var 声明属性 - -你不能将带有变量声明的对象或数组的属性用`var`来声明。 - -```js example-bad -var obj = {}; -var obj.foo = "hi"; // SyntaxError missing ; before statement - -var array = []; -var array[0] = "there"; // SyntaxError missing ; before statement -``` - -而是省略掉`var`关键词: - -```js example-good -var obj = {}; -obj.foo = "hi"; - -var array = []; -array[0] = "there"; -``` - -### 不推荐使用的关键字 - -如果你用的是另一种编程语言,那么在 javaScript 中使用不具有相同或完全没有意义的关键字也是很常见的: - -```js example-bad -def print(info){ - console.log(info); -}; // SyntaxError missing ; before statement -``` - -因此,建议使用`function`而不是`def`: - -```js example-good -function print(info) { - console.log(info); -} -``` - -## 参考 - -- [自动分号插入 (ASI)](/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion) -- [JavaScript 语句](/zh-CN/docs/Web/JavaScript/Reference/Statements) diff --git a/files/zh-cn/web/javascript/reference/errors/unterminated_string_literal/index.md b/files/zh-cn/web/javascript/reference/errors/string_literal_eol/index.md similarity index 88% rename from files/zh-cn/web/javascript/reference/errors/unterminated_string_literal/index.md rename to files/zh-cn/web/javascript/reference/errors/string_literal_eol/index.md index 6eeaf33fecba4f..6871229a49b915 100644 --- a/files/zh-cn/web/javascript/reference/errors/unterminated_string_literal/index.md +++ b/files/zh-cn/web/javascript/reference/errors/string_literal_eol/index.md @@ -1,6 +1,6 @@ --- -title: "SyntaxError: unterminated string literal" -slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal +title: "SyntaxError: string literal contains an unescaped line break" +slug: Web/JavaScript/Reference/Errors/String_literal_EOL --- {{jsSidebar("Errors")}} @@ -8,7 +8,9 @@ slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal ## 信息 ```plain -SyntaxError: unterminated string literal +SyntaxError: Invalid or unexpected token (V8-based) +SyntaxError: '' string literal contains an unescaped line break (Firefox) +SyntaxError: Unexpected EOF (Safari) ``` ## 错误类型 diff --git a/files/zh-cn/web/javascript/reference/errors/undefined_prop/index.md b/files/zh-cn/web/javascript/reference/errors/undefined_prop/index.md deleted file mode 100644 index 68dd5317d442a9..00000000000000 --- a/files/zh-cn/web/javascript/reference/errors/undefined_prop/index.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: 'ReferenceError: reference to undefined property "x"' -slug: Web/JavaScript/Reference/Errors/Undefined_prop -l10n: - sourceCommit: 6d606174faaedaa5dee7b7ebd87602cd51e5dd7e ---- - -{{jsSidebar("Errors")}} - -当脚本尝试去访问一个不存在的对象属性时,就会出现 JavaScript 警告“reference to undefined property”。 - -## 消息 - -```plain -ReferenceError: reference to undefined property "x" (Firefox) -``` - -## 错误类型 - -(仅限 Firefox)仅在 `javascript.options.strict` 首选项设置为 `true` 的情况下会出现 {{jsxref("ReferenceError")}} 警告。 - -## 哪里出错了? - -脚本尝试去访问一个不存在的对象属性。有两种方法可以访问属性,请参阅[属性访问器](/zh-CN/docs/Web/JavaScript/Reference/Operators/Property_accessors)参考页以获取更多信息。 - -## 示例 - -### 无效的 - -本例中,`bar` 属性是未定义的,因此会出现 `ReferenceError`。 - -```js example-bad -const foo = {}; -foo.bar; // ReferenceError: reference to undefined property "bar" -``` - -### 有效的 - -为了避免错误,你需要向对象添加 `bar` 的定义或在尝试访问 `bar` 属性之前检查 `bar` 属性是否存在;可以使用 {{jsxref("Operators/in", "in")}} 运算符或 {{jsxref("Object.hasOwn()")}} 方法来实现,如下所示: - -```js example-good -const foo = {}; - -// 定义 bar 属性 - -foo.bar = "moon"; -console.log(foo.bar); // "moon" - -// 在访问 bar 属性之前测试其是否存在 - -if (Object.hasOwn(foo, "bar")) { - console.log(foo.bar); -} -``` - -## 参见 - -- [属性访问器](/zh-CN/docs/Web/JavaScript/Reference/Operators/Property_accessors) diff --git a/files/zh-cn/web/javascript/reference/errors/unexpected_token/index.md b/files/zh-cn/web/javascript/reference/errors/unexpected_token/index.md index 674baa6a92a3e0..3ec6b4275a4382 100644 --- a/files/zh-cn/web/javascript/reference/errors/unexpected_token/index.md +++ b/files/zh-cn/web/javascript/reference/errors/unexpected_token/index.md @@ -5,15 +5,24 @@ slug: Web/JavaScript/Reference/Errors/Unexpected_token {{jsSidebar("Errors")}} +JavaScript 异常“unexpected token”会在解析器在给定位置没有识别到它可以理解的标记(而无法理解程序的结构)时发生。这可能只是一个简单的拼写错误。 + ## 信息 ```plain -SyntaxError: expected expression, got "x" -SyntaxError: expected property name, got "x" -SyntaxError: expected target, got "x" -SyntaxError: expected rest argument name, got "x" -SyntaxError: expected closing parenthesis, got "x" -SyntaxError: expected '=>' after argument list, got "x" +SyntaxError: Unexpected token ';' (V8-based) +SyntaxError: Unexpected identifier 'x' (V8-based) +SyntaxError: Unexpected number (V8-based) +SyntaxError: Unexpected string (V8-based) +SyntaxError: Unexpected regular expression (V8-based) +SyntaxError: Unexpected template string (V8-based) +SyntaxError: unexpected token: identifier (Firefox) +SyntaxError: expected expression, got "x" (Firefox) +SyntaxError: expected property name, got "x" (Firefox) +SyntaxError: expected target, got "x" (Firefox) +SyntaxError: expected meta, got "x" (Firefox) +SyntaxError: expected rest argument name, got "x" (Firefox) +SyntaxError: expected closing parenthesis, got "x" (Firefox) ``` ## 错误类型 @@ -42,6 +51,6 @@ Math.max(2, 42); Math.max(2, 42, 13 + 37); ``` -## 相关 +## 参见 -- {{jsxref("Math.max()")}} +- {{jsxref("SyntaxError")}}