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;