web-dev-qa-db-ja.com

Safari Javascriptで「let」キーワードを使用できませんか?

「let」キーワードの最良の使い方がわかりません...

  • IE11とChrome45では問題なく使用できます
  • Safari8.0.4では、以前のバージョンのChromeと同様に、「予約済みのWord'let 'の予期しない使用」というエラーが表示されます。
  • Firefoxでは、letキーワードは<script type="application/javascript;version=1.7"/>内でのみ機能しますが、このスクリプトタイプは、IE11、Chrome45、Safari8ではJavascriptとしても認識されません。

これが実際の動作を示すJSFiddleです: https://jsfiddle.net/p6cgtyg6/1/

つまり、ユーザーに最新バージョンのブラウザの使用を要求してもかまいません。

そして、正直なところ、このキーワードをサポートするSafariのバージョンがない場合は、Safariを除外してもかまいません。 (それは本当に本当ですか?SafariがES6の観点から非常に悪いように見えるのに、なぜ誰もがIE)について把握することにすべての時間を費やすのですか?私は何かを逃したことがありますか?).

しかし、Chrome/IEを妨げずに、Firefoxで「let」を機能させるにはどうすればよいですか? (FirefoxスクリプトタグがChromeとどのように異なるかについて不満を持っている人々からのリンクはまだ見つかりません。さらに多くの苦情が予想されたので、明らかな何かを見逃したに違いないと思います...)

11
Lucian Wischik

Safari 8に関しては、それはただ サポートされていません ;そのブラウザでは、 Babel を使用することをお勧めします。

このバグ はすぐには修正されない*と直感している場合は、Firefoxを検出するスクリプトを作成して、type属性に適切な値をスクリプトに挿入することができます。 。

ちなみに、 このトランスパイラー -を使用したい場合を除いて、letブロックを使用しないことをお勧めします。 ドロップされる の式も使用しないでください。

* Firefox44で修正

6
Knu

letはECMAScript6仕様の一部であり、ECMAScript6自体は「ドラフト」ステータスです。不完全な形式であっても、その機能は実際のブラウザバージョンでは完全にはサポートされていません。

今日ES6に飛び込んで本番環境に移行したいので、最善の策はES6からES5へのトランスパイラーを使用することです。最も顕著なものは BabelTraceur で、両方のCLIとして使用できます。選択したビルドシステムのパッケージ。 Babel および Traceur を試すためのオンラインツールがあります。そして Scratch JS 拡張機能ChromeはBabelとTraceurの両方を使用し、ビルドシステムがオプションでない場合、ES6スクリプトの開発とコンパイルに最適です。

これが 最新の比較表 で、ブラウザとES6コンパイラの両方でES6機能のサポートが含まれています。

そしてここに 素晴らしいコレクション ES6関連のツールがあります。

4
Estus Flask
1
click2install