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"(0o 或 0O)。
前導零總是被禁止的,即使該字面量不是有效的八進位制字面量語法(例如,當字面量包含數字 8 或 9,或者有小數點時)。數字字面量只有在其單位位是 0 時才能以 0 開頭。
示例
"0" 字首的八進位制字面量
js
"use strict";
03;
// SyntaxError: "0"-prefixed octal literals are deprecated; use the "0o" prefix instead
有效的八進位制數
使用前導零後跟字母 "o" 或 "O"
js
0o3;