JavaScript函數(shù)callee、call、apply的區(qū)別
標(biāo)簽:
JavaScript
arguments.callee
关于callee的解释:callee 是 arguments 对象的一个属性。可以用于引用该函数的函数体内当前正在执行的函数。这在函数的名称是未知时很有用,例如在没有名称的函数表达式 (也称为“匿名函数”)内。
递归调用实现一个阶乘函数:
function sum(num){
if(num <= 1){
return 1;
}else{
console.log(num, arguments.callee(num-1));
return num * arguments.callee(num-1);
}
}
console.log(sum(3));
看以下输出结果为6,关于输出顺序有不明白的可以见知乎讨论
apply使用情况
function box(num1,num2){
return num1+num2;
}
function sum(num1,num2){
//this 表示全局作用域,浏览器环境下window,node环境global,[]表示传递的参数
return box.apply(this,[num1,num2]);
//或者下面写法arguments可以当数组传递
//return box.apply(this,arguments);
}
console.log(sum(10,10)); //输出结果: 20
call的使用示例
function box(num1,num2){
return num1+num2;
}
function sum2(num1,num2){
return box.call(this,num1,num2);
}
console.log(sum(10,10)); //输出结果: 20
总结call、apply两种情况使用的区别: call传递参数是按照数组传递,apply是一个一个传递
點(diǎn)擊查看更多內(nèi)容
3人點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦