根据旧谷歌集团的这个帖子,Apps脚本基于ECMA-262第3版.
这似乎得到了编辑器中的自动完成显示第3版阵列功能这一事实的支持.
但是,以下代码运行得非常好,这使人对此事表示怀疑:
var array = [
1,2,3,4,5
];
Logger.log("forEach:");
array.forEach(function (item,idx,arr) {
Logger.log(item);
});
Run Code Online (Sandbox Code Playgroud)
请注意每个使用ECMA-262第5版阵列功能.
有权威的人会给出明确的答案吗?为什么会这样?是否可以安全地依赖所有第5版功能或已经实施并且似乎有效的子集?
是否有任何转换器或技术可用于将Javascript 1.7代码及其新语言功能转换为Javascript 1.6?
我对迭代器生成器和yield关键字最感兴趣.我使用的脚本引擎只有1.6,但迭代器生成器可以提供更好的代码.用手书写似乎很复杂.
我尝试用C#编写它,用ILSpy反编译,然后手动将其移植到Javascript.但那真是一团糟.
我已经搜索过这样一个转换器,但我什么都没找到 - 可能是由于在这种情况下搜索条件与不相关的结果共享.
Google Apps脚本似乎无法识别该功能Object.assign()。尝试使用它时出现错误:
TypeError: Cannot find function assign in object function Object() { [native code for Object.Object, arity=1] }
Run Code Online (Sandbox Code Playgroud)
我测试功能的代码是直接从MDN复制的示例:
function myFunction() {
const object1 = {
a: 1,
b: 2,
c: 3
};
const object2 = Object.assign({c: 4, d: 5}, object1); //error is thrown here
console.log(object2.c, object2.d);
// expected output: 3 5
}
Run Code Online (Sandbox Code Playgroud)
我将上面的代码直接复制粘贴到Chrome开发者控制台中,该控制台运行良好并提供了预期的输出。
我在网上找不到任何内容说应用程序脚本不支持此特定功能或类似功能。发生什么了?我怎样才能解决这个问题?