1.toString () SyntaxError dans Javascript

Pourquoi la première ligne ci-dessous donne-t-elle une erreur bien que la deuxième et la troisième ligne fonctionnent bien?

1.toString(); // SyntaxError (1).toString(); // OK 1['toString'](); // OK 

L'analyseur essaie de traiter 1. comme début de littéral à virgule flottante – uniquement pour toString transforme en un nombre invalide.

Comparer avec:

 1.0.toString() 

Le . Présente une ambiguïté. Est-ce une décimale ou un accessoire de propriété?

L'interprète le voit comme une décimale, donc vous pouvez utiliser .. pour permettre à la fois la décimale, puis la syntaxe de la propriété.

 1..toString(); 

Ou utilisez l'une des autres manières que vous montrez pour résoudre l'ambiguïté.

Dans (1).toString() , (1) l'oblige à évaluer avant .toString () afin qu'il fonctionne. Dans 1.toString() , 1 n'est pas un identifiant valide, donc il ne fonctionne pas.