SyntaxError: "0"-prefixed octal literals are deprecated
JavaScript の厳格モードでのみ発生する例外 "0-prefixed octal literals are deprecated; use the "0o" prefix instead" は、非推奨の 8 進リテラル(0 の後に数字が続く形式)が使用されている場合に発生します。
エラーメッセージ
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。
エラーの原因
8 進文字と 8 進エスケープシーケンスは非推奨で、厳格モードでは SyntaxError をスローします。ECMAScript 2015 以降では、標準文法として 0 から始まり大文字、または小文字のラテン文字 "O" (0o または 0O) が続く文法を使用します。
先頭のゼロは、リテラルが有効な8進リテラルの構文を満たしていない場合(リテラルに数字の 8 や 9 が含まれている場合や、小数点がある場合など)であっても、常に禁止されています。数値リテラルは、その 0 が単位の桁である場合にのみ、0 で始まることができます。
例
>"0" 接頭辞付きの 8 進文字
js
"use strict";
03;
// SyntaxError: "0"-prefixed octal literals are deprecated; use the "0o" prefix instead
有効な 8 進数
0 に "o" か "O" が続くものを使用します。
js
0o3;