2009-07-17 10 views
0

zum Ausführen von JavaScript in Rhino muss man einen Ausführungskontext für das Skript erstellen. Der Konstruktor der Context class verwendet die Konformitätsstufe JavaScript VERSION_DEFAULT.Mozilla Rhino: Standard-JavaScript-Konformitätsstufe

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; 
} 

Da ich nicht eine Abbildung von VERSION_DEFAULT einem der tatsächlichen VERSION_XXX Konstanten in der API nicht finden, ich frage mich, welche JavaScript-Konformitätsstufe VERSION_DEFAULT ist. Die Release Note von Rhino 1.7R1 (* ttps: //developer.mozilla.org/en/New_in_Rhino_1.7R1) besagt, dass man die JavaScript-Version explizit angeben muss, aber nicht erwähnt, welche Version verwendet wird, wenn Context.setLanguageVersion() weggelassen wird .

+0

es ist Open Source ... – geowa4

+0

Vielleicht sollten Sie diese Frage auf der Mozilla Rhino Mailingliste stellen. –

Antwort

1

Nachdem wir den Großteil des Rhino-Codes durchgesehen haben, sieht es so aus, als ob die meisten Tests gegen die Sprachversion negativ getestet wurden, z.

 
if (getLanguageVersion() != Context.VERSION_1_2) { 
    return paramCount; 
} 

VERSION_DEFAULT wird als ‚0‘ definiert, so dass der einzige Ort, wo es aussieht wie es festgelegt werden müssten als 1.7 ist die „let“ und „Ausbeute“ keywords, weil dieser Code von TokenStream zu unterstützen:

 
if ((result == Token.LET || result == Token.YIELD) && 
    parser.compilerEnv.getLanguageVersion() 
    < Context.VERSION_1_7) 
{ 
    // LET and YIELD are tokens only in 1.7 and later 
    result = Token.NAME; 
}