Подтвердить что ты не робот

Что означает "1. что-то" в JavaScript?

<script>
1..z
</script>

Это не дает синтаксиса или ошибки времени выполнения. Похоже, что число и имя переменной могут быть любыми другими (123..qwerty). Мне интересно, что означает это утверждение?

4b9b3361

Ответ 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'](); 

Ответ 2

Объедините их:

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

К заключению:

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