繁体   English   中英

Mozilla Rhino:默认的JavaScript合规性级别

[英]Mozilla Rhino: Default JavaScript Compliance Level

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

由于无法在API中找到VERSION_DEFAULT到任何实际VERSION_XXX常量的映射,所以我想知道哪个JavaScript符合级别VERSION_DEFAULT。 Rhino 1.7R1的发行说明(* ttps://developer.mozilla.org/en/New_in_Rhino_1.7R1)指出必须明确指定JavaScript版本,但是在Context.setLanguageVersion()省略。

浏览了大多数Rhino代码后,似乎大多数针对语言版本的测试都是负面测试,例如

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

VERSION_DEFAULT的定义为'0',因此需要将其设置为1.7的地方是因为TokenStream中的以下代码支持了“ let”和“ yield”关键字:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM