Que signifie «1 … quelque chose» en JavaScript?

<script> 1..z </script> 

Cela ne donne pas de syntaxe ou d'erreur d'exécution. On dirait que le numéro et le nom de la variable peuvent être les autres ( 123..qwerty ). Je me demande ce que signifie cette déclaration?

N'est pas une gamme, l'expression 1..z simplement undefined .

Pourquoi?

Le premier point se termine par une représentation d'un littéral numérique , vous donnant une primitive Number :

 var n = 1.; 

La grammaire d'un littéral numérique est exprimée comme ceci:

 DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt 

Comme vous pouvez voir la partie DecimalDigits après le point est facultatif (suffixe opt).

Le second point est l'accessoire de propriété, il essayera seulement d'obtenir la propriété z , qui n'est undefined car elle n'existe pas sur l'objet Number.prototype :

 1..z; // undefined 1..toString(); // "1" 

Est-il équivalent d'accéder à une propriété avec l'accessoire de propriété de notation de parenthèse:

 1['z']; // or 1['toString'](); 

Combinez ceci:

 alert(1.foo); // --> parse error alert(1.4.foo); // --> undefined - number 1.4 doesn't have the property foo alert(1.); // --> 1 (?) 

À la conclusion:

 alert(1..foo); // --> undefined