是否可以做这样的事情?
function one(){
two(arguments)
}
function two(a, b){
console.log(a);
console.log(b);
}
one('a', 'b');
答案 0 :(得分:6)
是的,请使用apply()
function one(){
two.apply(null, [].slice.call(arguments))
}
一些旧的引擎坚持收到一个数组作为apply()
的第二个参数。不幸的是,arguments
是类似数组的对象。也就是说,它不是真正的数组,但除length
和callee
属性外,它还有caller
属性和数字索引。因此,我们调用Array.slice()
以便将普通数组传递给apply()
。
那就是说,V8(由node.js使用)应该没有这样的翻译:
function one(){
two.apply(null, arguments)
}
那是我的错,我错过了node.js标签。
答案 1 :(得分:3)
的 jsFiddle Demo
强> 的
您正在寻找apply
。 apply语法允许您将值数组作为参数传递给函数。
function one(){
two.apply(this, arguments);
}
function two(a, b){
console.log(a);
console.log(b);
}
one('a', 'b');