Использование " 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.