<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