详解JavaScript函数callee、call、apply的区别


Posted in Javascript onMarch 08, 2019

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));

详解JavaScript函数callee、call、apply的区别

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是一个一个传递

以上所述是小编给大家介绍的JavaScript函数callee、call、apply的区别详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
非常好用的JsonToString 方法 简单实例
Jul 18 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
Mar 27 Javascript
基于jquery编写的放大镜插件
Mar 23 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
Jun 12 Javascript
js H5 canvas投篮小游戏
Aug 18 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
js实现时间轴自动排列效果
Mar 09 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
Apr 17 Javascript
koa大型web项目中使用路由装饰器的方法示例
Apr 02 Javascript
vue以组件或者插件的形式实现throttle或者debounce
May 22 Javascript
node.js爬虫框架node-crawler初体验
Oct 29 Javascript
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 #Javascript
详解小程序循环require之坑
Mar 08 #Javascript
详解js 创建对象的几种方法
Mar 08 #Javascript
浅谈Javascript常用正则表达式应用
Mar 08 #Javascript
validform表单验证的实现方法
Mar 08 #Javascript
webpack4.x下babel的安装、配置及使用详解
Mar 07 #Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 #Javascript
You might like
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
asp 取文本框名称代码
2008/12/02 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Python流程控制 while循环实现解析
2019/09/02 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
2019年亲子运动会口号
2019/10/11 职场文书
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript