このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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;

関連情報