0

Rhino で JavaScript を実行するには、スクリプトの実行コンテキストを作成する必要があります。Context クラスのコンストラクターはJavaScript 準拠レベルを使用しますVERSION_DEFAULT.

protected Context(ContextFactory factory) {
    if(factory == null) {
        throw new IllegalArgumentException("factory == null");
    }
    this.factory = factory;
    **setLanguageVersion(VERSION_DEFAULT);**
    optimizationLevel = codegenClass != null ? 0 : -1;
    maximumInterpreterStackDepth = Integer.MAX_VALUE;
}

VERSION_DEFAULTAPIの実際の定数へのマッピングが見つからないため、VERSION_XXXどの JavaScript コンプライアンス レベル VERSION_DEFAULT が正しいのか疑問に思っています。Rhino 1.7R1 のリリース ノート (*ttps://developer.mozilla.org/en/New_in_Rhino_1.7R1) には、JavaScript のバージョンを明示的に指定する必要があると記載されていますが、Context.setLanguageVersion()を省略した場合に使用されるバージョンについては言及されていません。

4

1 に答える 1

1

ほとんどの Rhino コードを見てみると、言語バージョンに対するテストのほとんどはネガティブ テストのようです。

if (getLanguageVersion() != Context.VERSION_1_2) {
  paramCount を返します。
}

VERSION_DEFAULT は '0' として定義されているため、1.7 として設定する必要があると思われる場所の 1 つは、TokenStream からの次のコードにより、"let" および "yield" キーワードをサポートすることです。

if ((結果 == Token.LET || 結果 == Token.YIELD) &&
  parser.compilerEnv.getLanguageVersion()
    < Context.VERSION_1_7)
{
  // LET と YIELD は 1.7 以降でのみトークンです
  結果 = Token.NAME;
}
于 2009-08-31T09:30:24.603 に答える