从一道js编程题开始:
实现函数 callIt,调用之后满足如下条件
1、返回的结果为调用 fn 之后的结果
2、fn 的调用参数为 callIt 的第一个参数之后的全部参数
正确实现:
function callIt(fn) {
//获取除了fn以外的所有参数
var newArr = Array.prototype.slice.call(arguments,1);
//执行fn并将newArr这个数组里面的数据作为参数传给fn
return fn.apply(this,newArr);
}
我的疑问实现:
function callIt(fn) {
var newArr = Array.prototype.slice.call(arguments,1);
//如果这样实现的话,newArr会直接以数组的形式传入,而不是分成一个一个的参数
return fn(newArr);
}
测试:
function callIt(fn) {
var newArr = Array.prototype.slice.call(arguments,1);
return fn(newArr);
}
function test(n,m){
console.log(n+m);
}
callIt(test,1,2);
输出: 1,2undefined
//这里传入test的n是数组,m是undefined
---------------------------------------------------------------------------------------------------------------------
function callIt(fn) {
var newArr = Array.prototype.slice.call(arguments,1);
return fn.apply(this,newArr);
}
function test(n,m){
console.log(n+m);
}
callIt(test,1,2);
输出:3