Spec-Zone.ru › JavaScript

SyntaxError: идентификатор начинается сразу после числового литерала

Исключение JavaScript "идентификатор начинается сразу после числового литерала" возникает, когда идентификатор начинается с цифры. Идентификаторы могут начинаться только с буквы, подчеркивания (_) или знака доллара ($).

Сообщение

SyntaxError: Invalid or unexpected token (V8-based)
SyntaxError: identifier starts immediately after numeric literal (Firefox)
SyntaxError: No identifiers allowed directly after numeric literal (Safari)

Тип ошибки

SyntaxError

Что пошло не так?

Имена переменных, называемые идентификаторами, соответствуют определенным правилам, которых должен придерживаться ваш код!

Идентификатор JavaScript должен начинаться с буквы, подчеркивания (_) или знака доллара ($). Они не могут начинаться с цифры! Только последующие символы могут быть цифрами (0-9).

Примеры

Имена переменных, начинающиеся с числовых литералов

Имена переменных не могут начинаться с чисел в JavaScript. Следующее не работает:

const 1life = "foo";
// SyntaxError: identifier starts immediately after numeric literal

const foo = 1life;
// SyntaxError: identifier starts immediately after numeric literal

Вам нужно будет переименовать переменную, чтобы избежать ведущей цифры.

const life1 = "foo";
const foo = life1;

В JavaScript существует синтаксическая особенность при вызове свойств или методов у чисел. Если вы хотите вызвать метод у целого числа, вы не можете сразу использовать точку после числа, потому что точка интерпретируется как начало десятичной дроби, из-за чего парсер видит имя метода как идентификатор сразу после числового литерала. Чтобы избежать этого, вам нужно либо заключить число в скобки, либо использовать двойную точку, где первая точка является десятичной точкой для числового литерала, а вторая точка — аксессором свойства.

alert(typeof 1.toString())
// SyntaxError: identifier starts immediately after numeric literal

Корректные способы вызова методов у чисел:

// Wrap the number in parentheses
alert(typeof (1).toString());

// Add an extra dot for the number literal
alert(typeof 2..toString());

// Use square brackets
alert(typeof 3["toString"]());

См. также

  • Лексическая грамматика
  • Руководство "Грамматика и типы"

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Identifier_after_number

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API