SyntaxError: "0"-prefixed octal literals are deprecated

當使用已廢棄的八進位制字面量(0 後跟數字)時,會觸發 JavaScript 嚴格模式下特有的異常:"0-prefixed octal literals are deprecated; use the "0o" prefix instead"("0" 字首的八進位制字面量已廢棄;請改用 "0o" 字首)。

訊息

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)

錯誤型別

SyntaxError 僅在嚴格模式下出現。

哪裡出錯了?

八進位制字面量已廢棄。當你在十進位制整數前加上 0 時,實際上是將其更改為八進位制字面量,這可能會令人感到意外。標準化語法使用前導零後跟小寫或大寫拉丁字母 "O"(0o0O)。

前導零總是被禁止的,即使該字面量不是有效的八進位制字面量語法(例如,當字面量包含數字 89,或者有小數點時)。數字字面量只有在其單位位是 0 時才能以 0 開頭。

示例

"0" 字首的八進位制字面量

js
"use strict";

03;

// SyntaxError: "0"-prefixed octal literals are deprecated; use the "0o" prefix instead

有效的八進位制數

使用前導零後跟字母 "o" 或 "O"

js
0o3;

另見