從一道js編程題開始:
實現(xiàn)函數(shù) callIt,調(diào)用之后滿足如下條件
1哑诊、返回的結(jié)果為調(diào)用 fn 之后的結(jié)果
2、fn 的調(diào)用參數(shù)為 callIt 的第一個參數(shù)之后的全部參數(shù)
正確實現(xiàn):
function callIt(fn) {
//獲取除了fn以外的所有參數(shù)
?var newArr = Array.prototype.slice.call(arguments,1);
//執(zhí)行fn并將newArr這個數(shù)組里面的數(shù)據(jù)作為參數(shù)傳給fn
????return fn.apply(this,newArr);
}
我的疑問實現(xiàn):
function callIt(fn) {
????var newArr = Array.prototype.slice.call(arguments,1);
//如果這樣實現(xiàn)的話及刻,newArr會直接以數(shù)組的形式傳入镀裤,而不是分成一個一個的參數(shù)
????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是數(shù)組,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?