要在Rhino中执行JavaScript,必须为脚本创建执行上下文。 Context class的构造函数使用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_DEFAULT
到API中任何实际VERSION_XXX
常量的映射,我想知道哪个JavaScript合规级别为VERSION_DEFAULT。
Rhino 1.7R1的发行说明(* ttps://developer.mozilla.org/en/New_in_Rhino_1.7R1)声明必须明确指定JavaScript版本,但它没有提到{{1}时使用的版本省略。
答案 0 :(得分:1)
看过大多数Rhino代码后,看起来大多数针对语言版本的测试都是负面测试,例如。
if (getLanguageVersion() != Context.VERSION_1_2) { return paramCount; }
VERSION_DEFAULT被定义为'0',所以它看起来需要设置为1.7的地方是支持“let”和“yield”关键字,因为来自TokenStream的代码:
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; }