Точка "." имеет две семантики в JavaScript.
Семантика 1. Представляет десятичную точку (число с плавающей запятой) в арифметике, например 2,5.
Семантика 2. Получите атрибуты и методы объекта, например [].push(2).
Вряд ли здесь есть что-то сложное для понимания, но интересен следующий вопрос.
Скопируйте код кода следующим образом:
// Как будет выполняться эта строка кода?
1.тоСтрока();
Как следует в Firebug
Точка здесь выражает вышеупомянутую семантику 1, поэтому за точкой должно следовать число. Здесь следует toString, и синтаксис отчета неверен.
Решение очень простое, например, добавление круглых скобок.
Скопируйте код кода следующим образом:
(1).toString();
Еще можно написать так, но это сложнее понять
Скопируйте код кода следующим образом:
1..toString();
Причина, по которой он может работать в браузерах, заключается в том, что каждый JS-движок браузера понимает «1..toString()» как «1.0.toString()». Первая точка здесь — это семантика 1, а вторая точка — семантика 2.
Есть еще более странный способ записи, но об ошибках не сообщается.
Скопируйте код кода следующим образом:
1.toString(); // Обратите внимание, что перед точкой стоит пробел
Очевидно, что точка здесь имеет семантическое значение 2, то есть движок JS будет игнорировать пробелы перед оператором точки. Фактически, независимо от того, стоят ли пробелы до или после него, он будет игнорироваться. следующее
Скопируйте код кода следующим образом:
1. toString(); // До и после точки есть пробел
1. toString(); // До и после точки есть два пробела.
1.toString(); // Перед точкой стоит табуляция
1. toString(); // До и после точки есть табуляция.
Движок JS не только игнорирует пробелы, но и табуляцию.