В JavaScript, когда вы вызываете метод у числа, важно учитывать порядок выполнения операций и синтаксис. Рассмотрим ваш код:
```javascript
const x = 2000;
console.log(x.toLocaleString()); // => 2 000
console.log((2000).toLocaleString()); // => 2 000
console.log(2000.toLocaleString()); // => Invalid or unexpected token
```
1. **Первый и второй вызовы**:
- В первом случае `x.toLocaleString()` работает нормально, потому что `x` — это переменная, содержащая числовое значение, и у метода `toLocaleString` есть доступ к этому числу.
- Во втором случае `(2000).toLocaleString()` также работает корректно, потому что скобки заставляют интерпретатор JavaScript рассмотреть `2000` как числовое значение, а затем вызвать метод `toLocaleString`.
2. **Третий вызов**:
- В случае `2000.toLocaleString()` происходит ошибка `Invalid or unexpected token`. Это связано с тем, что JavaScript ожидает, что после числа будет либо оператор (например, `+` или `-`), либо конец выражения. Поэтому `2000.` воспринимается как окончание числа, а не как начало вызова метода.
Чтобы избежать этой проблемы, вы можете использовать скобки, как в вашем втором примере, или добавить точку в десятичной форме перед вызовом метода, например:
```javascript
2000..toLocaleString(); // => 2 000
```
Здесь двойная точка указывает на то, что первая точка является окончанием числа, а вторая точка — вызовом метода.