Які браузери на даний момент підтримують ключове слово JavaScript (дозволено)?


80

Я розробляю програму, і мені не потрібно ніколи турбуватися про Internet Explorer, і я вивчав деякі функції, доступні в браузерах класу A +, які не в Internet Explorer1.

Однією з цих функцій, з якою я хотів пограти, є ключове слово let для JavaScript

Здається, я не можу отримати жодного з їхніх прикладів `` дозволити '' працювати у Firefox 3.6 ( рядок User-Agent : Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.2) Gecko / 20100115 Firefox / 3.6 (.NET CLR 3.5.30729)). Я отримую SyntaxError: missing ; before statementпри виконанні let foo = "bar".

Отже, які браузери підтримують ключове слово let? (Або я роблю щось не так?)


Хоча і розумійте і погоджуйтесь, що ваш небайдужий-якщо-це працює в IE, ви повинні врахувати, що ключове слово "let" призначене лише для mozilla, тому навіть якщо це нормально сказати "IE його не підтримує", правильний щоб сказати це, було б "лише mozilla підтримує це". Подібно до того, як ми уникаємо тегів або ключових слів, призначених лише для IE, ви повинні уникати ключових слів і лише *.
WhyNotHugo

Гюго, потрібно пам’ятати, що HTML, CSS, JS вже не є веб-платформою. Кодом, здається, є код, який ніколи не працюватиме в будь-якій версії IE або будь - якому веб- браузері. :-)
Девід Мердок

Що, власне, намагається зробити Apple .. це 2015 рік і жодних ознак letпідтримки у їхньому жалюгідному браузері.
Салман фон Аббас

3
Зверніть увагу, багато старих відповідей (включаючи прийняту відповідь) були наздогнані подіями. Усі основні сучасні браузери підтримують letключове слово ES2015 (воно ж "ES6") , але станом на цей момент підтримка в деяких колах є досить новою (наприклад, лише iOS 10 Safari).
TJ Crowder,

Пропоную змінити прийняту відповідь на одну з правильних зараз. Так, прийнятий в даний час той був правильним на той час, але він був неправильним протягом декількох років, і мета SO - бути сховищем знань, а не історичним архівом. :-)
TJ Crowder

Відповіді:


56

EDIT : letі constпідтримуються усіма сучасними браузерами та є частиною специфікації ECMAScript 2015 (ES6) .

В основному, якщо вам не потрібно підтримувати що-небудь нижче IE11, letі ви constзараз безпечні для використання.

На IE11 є невелика химерність , letколи при використанні з forциклами змінна не прив'язана до forблоку, як ви очікували, вона поводиться так, як varце було ...

Дивіться також: підтримка let and const .


Стара та застаріла відповідь 2010 року: ці розширення не є стандартом ECMA, вони підтримуються лише реалізацією Mozilla.

У середовищі браузера ви повинні вказати номер версії JavaScript у своєму scriptтегу, щоб використовувати його:

<script type="application/javascript;version=1.7">  
  var x = 5;
  var y = 0;

  let (x = x+10, y = 12) {
    alert(x+y + "\n");
  }

  alert((x + y) + "\n");
</script>

1
Ну; Я просто оновив свою відповідь, а потім з’ясував, що ви мене побили за хвилину;). +1
Хармен

1
Дякую, я використовував HTML-код '<script> </script>' без типу attr.
Девід Мердок,

19
Зверніть увагу, що letключове слово зараз входить до стандарту ECMAscript 6 (проект).
Ніко Бернс,

3
Може бути ввімкнено в Chrome 19+ за допомогою прапорця "Експериментальні функції Javascript" та у node.js за допомогою --harmony.
Сальман фон Аббас

2
Це ;version=1.7все ще потрібно у Firefox? Я спробував letу консолі, і це спрацювало.
sam

31

Станом на квітень 2017 року:

  • Усі сучасні основні браузери, такі як Chrome, Firefox та Edge, підтримують letключове слово ES2015 (воно ж "ES6") .

  • iOS Safari не підтримував letдо OS 10 (наприклад, OS 9 не підтримував).

  • Деякі старі браузери, такі як IE9-IE11, підтримують ранню версію, letале не підтримують семантику, визначену ES2015 (особливо стосовно оголошень у заголовках forциклів). Отже, це не синтаксична помилка, і вона оголошує змінну, але вона працює не так, як вона повинна. Наприклад, у правильній реалізації наступні журнали 0, 1 та 2; на IE9-IE11 він реєструє 3, 3, 3:

  • Застарілі браузери, такі як IE8, його взагалі не підтримують.


1
Корисна відповідь: +1.
MWiesner,

25

В Internet Explorer 11 існує часткова підтримка ( forобласть неправильна ) та повна підтримка у всіх поточних браузерах ( таблиця сумісності ECMAScript 6: нехай ).


1
Незважаючи на те, що IE11 "підтримує" letключове слово (оскільки воно не видає a SyntaxError), його реалізація не відповідає специфікації - змінна неправильно блокується. (також зауважте, що IE за 11 років не буде і не буде)
CertainPerformance

12

Internet Explorer та Opera не підтримують letжодної версії браузера, Firefox з версії 2.0 та Safari з 3.2.

Дивіться цю таблицю версій JavaScript у Вікіпедії.

Я щойно з’ясував, що вам потрібно визначити, чи використовувати ви JavaScript 1.7 чи ні. Отже, ваш код буде таким:

<script type="application/javascript;version=1.7"> ... </script>

Схоже, ця специфікація версії зараз застаріла. Якщо я спробую вказати версію, Chrome не завантажує цей javascript.
Джей Шах,



2

Просто оновлення: Chrome тепер підтримує, letале лише якщо ви заявите "use strict"; директива.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.