私はアプリを開発していますが、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キーワードをサポートしていますか? (または私は何か間違っていますか?)
[〜#〜] edit [〜#〜]:let
およびconst
は、すべての最新のブラウザでサポートされており、 ECMAScript 2015(ES6) 仕様の一部です。
基本的に、IE11の下に何もサポートする必要がない場合、let
とconst
は最近使用しても安全です。
IE11では、let
ループで使用するとfor
に小さな癖があり、変数はfor
ブロックにバインドされません予想どおり、var
がしたように動作します...
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>
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などの廃止されたブラウザは、まったくサポートしていません。
Internet Explorer 11では部分的なサポート( for
スコープが正しくありません )と、現在のすべてのブラウザーでの完全なサポート( ECMAScript 6互換性テーブル:let )があります。
Internet Explorerおよび Opera は、バージョン2.0以降のFirefoxおよび3.2以降のSafariのどのブラウザーバージョンでもlet
をサポートしません。
こちらをご覧ください JavaScriptバージョンテーブル ウィキペディアで。
見つけたばかりです JavaScript 1.7を使用するかどうかを定義する必要があります。したがって、コードは次のようになります。
<script type="application/javascript;version=1.7"> ... </script>
どうやら Internet Explorer 1 in Edge mode support let
、perJavaScriptバージョン情報。
この質問が最初に尋ねられてからかなりの時間が経ちました。「let」および「const」キーワードがECMAScript 2015(ES6)で導入されました。このすばらしいES6互換性テーブルで「let」または「const」を検索してください: https://kangax.github.io/compat-table/es6/
ただの更新:Chromeはlet
をサポートするようになりましたが、"use strict"
;指令。