0

GoogleChromeの JavaScript1.7 エラー

例:

var x, y;
try {
 [x, y] = ["1", "2"];
 document.write(x+": "+y);
} catch(e){
 console.log(e);
}

エラーをキャッチ: 代入 JavaScript1.7 の左辺​​が無効です

実際に必要なのは、ブラウザがjavascript1.7をサポートしているかどうかをテストすることです

私が必要としているのは、ブラウザが javascript1.7 をサポートしているかどうかを実際にテストすることですが、この種のコードは使用しません。

jsversion = 1.7;

このコードは w3c では無効ではありませんが、グローバル変数でも動作しており、これは非常に悪いことです (競合やその他の問題を引き起こす可能性があります)。

次のコードを使用してみました(ただし、「strict」でエラーが発生します)

var i=0;
try{
    yield i;
} catch(ee) {
    document.write(ee);
}

ブラウザがjavascript1.7をサポートしているかどうかをテストするために、これが私がする必要があることです。

ありがとう。

4

1 に答える 1

2

試す

var isESNext;
try {
  eval('(function () { var x, y; [x, y] = [1, 2]; })()');
  isESNext = true;
} catch (ex) {
  isESNext = false;
}

これは、 ES.next パターン分解を使用するが、有効な EcmaScript 5 ではないevalコードの一部を解析するために使用します。宣言および割り当てを行う残りのコードは、有効な EcmaScript 3 コードですが、すべてのブラウザーで実行する必要があります。isESNext

あなたが遭遇している問題は第16章によるものです:

16 エラー

初期エラーとは、エラーを含むプログラム内の構成が評価される前に検出および報告できるエラーです。実装は、プログラムの最初の評価の前に、プログラムの初期エラーを報告する必要があります。

...

実装では、次の種類のエラーのインスタンスを早期エラーとして処理する必要があります。

  • 構文エラー。

しかし、上記のコード スニペットは初期エラーを回避します。

コードの初期エラーは、呼び出さevalれた時点で報告されますeval

于 2012-09-18T01:38:51.053 に答える