Использование " let " в javascript с точки зрения совместимости браузера?
каковы варианты использования let
ключевое слово в javascript. Кажется, это было бы действительно полезно.
Я видел Трейсер, но мне интересно, есть ли другие варианты, поэтому мне не нужно запускать через него целые проекты.
возможно ли это даже с некоторым типом polyfill или библиотеки. Или мне в основном нужно ждать, пока все старые браузеры не вымрут, чтобы использовать его изначально...
2 ответов
здесь не для имитации / shim ключевое слово в ECMAscript. Поэтому вы либо решаете полностью пойти с ним (что может быть очень плохой идеей в настоящее время), либо вы не можете его использовать.
Как вы знаете, let
является частью ECMAscript Next / гармония и в лучшем случае, его просто существующих как экспериментальная функция в некоторых браузерах. Даже если let
является очень стабильной функцией,ES.Следующий!--4--> спецификации все еще в потоке даже. Идите играть с ним, но на самом деле нет смысла полагаться на него имхо.
позвольте мне процитировать то, что я только что прочитал о вы не знаете JS: Scope & Closures-приложение B: Polyfilling Block Scope
PS: Это лицензировано под Creative Commons CC BY-NC-ND 3.0 так что это нормально, чтобы поделиться им, пока ссылка упоминается
большая цитата впереди:
рассмотрим следующий пример
{
let a = 2;
console.log( a ); // 2
}
console.log( a ); // ReferenceError
это будет отлично работать в средах ES6. Но можем ли мы это сделать? предварительно ЕС6? лови ответ.
try{throw 2}catch(a){
console.log( a ); // 2
}
console.log( a ); // ReferenceError
Эй! Это какой-то уродливый, странный код. Мы видим try / catch, который, кажется, принудительно бросает ошибку, но "ошибка", которую он бросает, - это просто значение 2, а затем объявление переменной, которое получает его, находится в предложении catch(a). Ум: взорван.
правильно, предложение catch имеет область действия блоков, что означает, что его можно использовать в качестве поля для области блока в средах pre-ES6.
дело в том, что инструменты могут транспилировать код ES6 для работы в средах pre-ES6. Вы можете написать код с помощью области блоков и воспользоваться такой функциональностью, а также позволить инструменту build-step позаботиться о создании кода, который будет работать при развертывании.
это фактически предпочтительный путь миграции для всех (кхем, большинство) ES6: использовать транспилер кода для получения кода ES6 и получения кода, совместимого с ES5, при переходе от pre-ES6 к ES6.