语法错误: "0" 前缀的八进制字面量已弃用
当使用已弃用的八进制字面量(以 0
开头,后面跟着数字)时,JavaScript 的 严格模式 中唯一的异常 "以 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;