Проверяя, поддерживает ли браузер распространение, а затем загружая соответствующий скрипт, возможно , есть гораздо более простой вариант: интегрировать инструмент, такой как Babel, в процесс сборки, чтобы автоматически переносить код в синтаксисе ES6 + доES5 автоматически.Например, если вы подключите следующее в Babel :
function debug (mode, string, ...params) {
if (debug_enabled && window.console) {
console.log(mode+": "+string+"(",...params,");");
}
}
Вы получите
"use strict";
function debug(mode, string) {
if (debug_enabled && window.console) {
var _console;
for (var _len = arguments.length, params = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
params[_key - 2] = arguments[_key];
}
(_console = console).log.apply(_console, [mode + ": " + string + "("].concat(params, [");"]));
}
}
Вы можете попробовать демо здесь .
Это позволяет вам писать, читать и отлаживать последнюю и лучшую версию языка, в то же время позволяя устаревшим браузерам понимать синтаксис вашего скрипта.
Babel не ограничивается толькоРазумеется, синтаксис с изменяющимся распространением - он может переносить весь современный синтаксис вплоть до ES5 (например, деструктуризация, распространение объекта, возведение в степень (**
) и многие другие).
Это сказалоОбратите внимание, что использование синтаксиса отличается от новых встроенных функций .Например, Array.prototype.includes
- это функция ES6, но поскольку это новая функция, а не новый синтаксис, она не будет передаваться - чтобы старые браузеры также могли понимать новые функции, используйте полифилы, например, полифилл.io .