Ответ 1
Является не диапазоном, выражение 1..z
просто вернет undefined
.
Почему?
Первая точка заканчивается представлением Numeric Literal, давая вам примитив Number
:
var n = 1.;
Грамматика числового литерала выражается следующим образом:
DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt
Как вы можете увидеть часть DecimalDigits после того, как точка является необязательной (выберите суффикс).
Вторая точка - это свойство accessor, она попытается получить свойство z
, которое undefined
, потому что оно не существует в объекте Number.prototype
:
1..z; // undefined
1..toString(); // "1"
Является эквивалентным для доступа к свойству с аксессуаром для обозначения нотации:
1['z']; // or
1['toString']();