Сегодня заметил, что на выходных произошла странная ошибка. У меня не получилось сразу его правильно сформулировать, но после некоторой отладки я выяснил, в чем проблема. Сообщение об ошибке было следующим:

TypeError: Объект не поддерживает свойство или метод parseFloat.

Поскольку мы используем Babel, я ожидал, что если бы эти новые функции не были доступны в старых браузерах, они были бы скомпилированы во что-то, что действительно работает. Но, видимо, это то, что в настоящее время не входит в рамки проекта Вавилон.

Проблема в том, что мы использовали более новую функцию Number.parseFloat(someFloat) в пользу глобальной функции parseFloat() в новом компоненте. Этот числовой синтаксис выглядит немного чище, так как вы используете меньше глобальных переменных, но в остальном нет никакой разницы. Мы просто предположили, что это сработает, поскольку это часть синтаксиса ES2015, и благодаря Babel мы обычно можем использовать то, что есть в стандарте. Это было не лучшее предположение, так как Babel ничего не делает для этих функций. И видимо слишком скучно это реализовывать парням из Microsoft и Apple :-)

Я исправил свои вещи, вернувшись к глобальным функциям, но вы также можете рассмотреть возможность использования этой числовой версии parseFloat или parseInt. Предлагаемый полифилл предельно прост:

Number.parseFloat = parseFloat;

Вам действительно нужно сделать что-то из этого, поскольку не только Internet Explorer еще не поддерживает новый синтаксис. Даже Safari не поддерживает эти новые функции. И на мобильных устройствах Firefox — единственный браузер, который поддерживает это.

Я написал этот небольшой пост, так как надеюсь, что он зажжет лампочку, если вы когда-нибудь решите использовать одну из этих новых функций. Использование транспилятора/компилятора, такого как Babel, не гарантирует, что ваша задница будет защищена в каждом случае, поэтому вам всегда нужно быть осторожным с поддержкой браузера.

Другой способ предотвратить подобные ошибки, очевидно, заключается в том, что Babel также может их обрабатывать.

Просто имейте в виду, что на данный момент вам необходимо дважды проверить поддержку браузера, когда вы начинаете использовать новую функцию.