如何在JavaScript中为Google闭包编译器设置参数类型?

时间:2013-12-12 10:02:21

标签: javascript google-closure-compiler

如你所知,每个函数都是java脚本本身有一个名为'arguments'的变量,它包含传递给函数的所有参数。

请考虑以下代码示例:

String.prototype.format = function(pattern){

var args = arguments.slice(1);

// other implementations are removed...

}

在这种情况下,Google Closure Compiler告诉我参数没有方法切片。

事实上,它有一个方法名称切片,但Google Closure Compiler无法确定参数数组的类型。

但在运行时代码运行正常

如何定义Google Closure Compiler的参数类型?

什么是最佳做法?

我已经测试了几种方法,但没有一种方法适合我。

如果没有这个,我们的项目将无法正确编译,所以我们需要这个,谢谢

由于

1 个答案:

答案 0 :(得分:3)

arguments不是数组(它是一个类似数组的对象),因此它不包含方法slice。您可以尝试:var args = [].slice.call(arguments,1);换句话说,为Array.slice - 对象调用arguments - 方法,以便从中创建真实的Array。要在浏览器控制台中测试运行此代码:

function foo(){
  console.log([].slice.call(arguments,1));
}
foo(1,2,3); //=> logs [2,3]

See also