如你所知,每个函数都是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的参数类型?
什么是最佳做法?
我已经测试了几种方法,但没有一种方法适合我。
如果没有这个,我们的项目将无法正确编译,所以我们需要这个,谢谢
由于
答案 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]