web-dev-qa-db-ja.com

現在、JavaScriptの「let」キーワードをサポートしているブラウザは何ですか?

私はアプリを開発していますが、Internet Explorerについて心配する必要はありません。また、Internet Explorer1にはないA +グレードのブラウザーに存在する機能のいくつかを検討していました。

私がいじりたかったこれらの機能の1つは、 JavaScriptのletキーワード です。

Firefox 3.6( ser-Agent string: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キーワードをサポートしていますか? (または私は何か間違っていますか?)

70
David Murdoch

[〜#〜] edit [〜#〜]letおよびconstは、すべての最新のブラウザでサポートされており、 ECMAScript 2015(ES6) 仕様の一部です。

基本的に、IE11の下に何もサポートする必要がない場合、letconstは最近使用しても安全です。

IE11では、letループで使用するとforに小さな癖があり、変数はforブロックにバインドされません予想どおり、varがしたように動作します...

参照: let および const サポート。


2010年の古くて時代遅れの回答:これらの拡張機能はECMA標準ではなく、Mozillaの実装によってのみサポートされています。

ブラウザ環境では、scriptタグに使用するJavaScriptバージョン番号を含める必要があります。

<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>
41
CMS

2017年4月現在:

  • Chrome、Firefox、Edgeなどの最新の主要ブラウザーはすべて、ES2015(別名「ES6」)letキーワードをサポートしています。

  • iOS Safariは、OS 10まではletをサポートしていませんでした(たとえば、OS 9はサポートしていませんでした)。

  • IE9-IE11などの一部の古いブラウザーは、letの初期バージョンをサポートしますが、do n'tは、ES2015で定義されたセマンティクスをサポートします(特にforループのヘッダー内の宣言に関して)。したがって、構文エラーではなく、変数を宣言しますが、本来の方法では機能しません。たとえば、正しい実装では、次のログは0、1、および2を記録します。 IE9-IE11では、3、3、3を記録します。

     for (let i = 0; i < 3; ++i) {
          setTimeout(function() {
              console.log(i);
           }, i * 100);
      }
     
  • IE8などの廃止されたブラウザは、まったくサポートしていません。

26
T.J. Crowder

Internet Explorer 11では部分的なサポート( forスコープが正しくありません )と、現在のすべてのブラウザーでの完全なサポート( ECMAScript 6互換性テーブル:let )があります。

25
sam

Internet Explorerおよび Opera は、バージョン2.0以降のFirefoxおよび3.2以降のSafariのどのブラウザーバージョンでもletをサポートしません。

こちらをご覧ください JavaScriptバージョンテーブル ウィキペディアで。

見つけたばかりです JavaScript 1.7を使用するかどうかを定義する必要があります。したがって、コードは次のようになります。

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

どうやら Internet Explorer 1 in Edge mode support let、perJavaScriptバージョン情報

6
jmoreno

この質問が最初に尋ねられてからかなりの時間が経ちました。「let」および「const」キーワードがECMAScript 2015(ES6)で導入されました。このすばらしいES6互換性テーブルで「let」または「const」を検索してください: https://kangax.github.io/compat-table/es6/

3
pursang

ただの更新:Chromeはletをサポートするようになりましたが、"use strict";指令。

2
Matthew