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


80

私はアプリを開発していて、Internet Explorerについて心配する必要はなく、InternetExplorer1にはないA +グレードのブラウザーにある機能のいくつかを調べていました。

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

Firefox 3.6で「let」の例を動作させることができないようです(ユーザーエージェント文字列: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 2011

ヒューゴ、HTML、CSS、JSはもはやWeb専用のプラットフォームではないことを覚えておく必要があります。コードはたまたま、IEのどのバージョンやWebブラウザでも実行されないコードです。:-)
David Murdoch

いったいAppleは何をしようとしているのか..それは2015年でありlet、彼らの哀れなブラウザでのサポートの兆候はありません。
Salman von Abbas

3
注意してください古い回答(受け入れられた回答を含む)の多くは、イベントによって追い抜かれています。すべての主要な最新ブラウザはES2015(別名「ES6」)letキーワードをサポートしていますが、この記事の執筆時点では、一部のサークルではかなり新しいサポートが提供されています(たとえば、iOS 10 Safariのみ)。
TJ Crowder 2017

受け入れた回答を、現在正しい回答の1つに変更することをお勧めします。はい、現在受け入れられているものは当時は正しかったのですが、数年前から正しくありません。SOの目的は、歴史的アーカイブではなく、知識のリポジトリにすることです。:-)
TJ Crowder

回答:


56

編集letそしてconst、すべての最新のブラウザでサポートされており、ECMAScript 2015(ES6)仕様の一部です。

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

上のIE11の小さな癖がありますletで使用する場合forのループは、変数がバインドされていないforとして、それは動作します、あなたが期待するようブロックvarしました...

参照:letおよび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
ハーメン2010年

1
おかげで、私はタイプattrなしでHTML5の「<script> </ script>」を使用していました。
David Murdoch 2010年

19
letキーワードECMAscript6(ドラフト)標準に含まれていることに注意してください。
ニコバーンズ

3
Chrome 19以降では、「Experimental Javascript features」フラグを使用して、node.jsでは--harmony。を使用して有効にできます。
Salman von Abbas

2
されて;version=1.7まだFirefoxで必要?letコンソールで試してみましたが、うまくいきました。
sam 2013

31

2017年4月現在:

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

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

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

  • IE8などの廃止されたブラウザはそれをまったくサポートしていません。


1
役立つ答え:+1。
MWiesner 2018

25

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


1
IE11はletキーワードを「サポート」しますが(スローしないという点でSyntaxError)、その実装は仕様に準拠していません。変数は適切にブロックスコープされていません。(また、11を
超える

12

Internet ExplorerとOperalet、どのブラウザバージョンでもサポートしていません。バージョン2.0以降のFirefoxと3.2以降のSafariです。

ウィキペディアでこのJavaScriptバージョンの表を参照してください。

JavaScript1.7を使用するかどうかを定義する必要があることがわかりました。したがって、コードは次のようになります。

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

このバージョン仕様は現在非推奨になっているようです。バージョンを指定しようとすると、ChromeはそのJavaScriptをロードしません。
ジェイシャー



2

単なる更新:Chromeは現在サポートしてletいますが、"use strict";を宣言した場合のみです。指令。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.