详解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 相关文章推荐
jquery实现div阴影效果示例代码
Sep 16 Javascript
js单例模式详解实例
Nov 21 Javascript
原生js的弹出层且其内的窗口居中
May 14 Javascript
JS获取Table中td值的方法
Mar 19 Javascript
很棒的js Tab选项卡切换效果
Aug 30 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
浅谈express 中间件机制及实现原理
Aug 31 Javascript
Angularjs使用过滤器完成排序功能
Sep 20 Javascript
javascript填充默认头像方法
Feb 22 Javascript
Element-ui table中过滤条件变更表格内容的方法
Mar 02 Javascript
Vue组件Draggable实现拖拽功能
Dec 01 Javascript
vue项目两种方式实现竖向表格的思路分析
Apr 28 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
php 中文和编码判断代码
2010/05/16 PHP
请离开include_once和require_once
2013/07/18 PHP
YII中assets的使用示例
2014/07/31 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python中DJANGO简单测试实例
2015/05/11 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python开启debug模式的方法
2019/06/27 Python
python3 实现调用串口功能
2019/12/26 Python
Python 如何创建一个线程池
2020/07/28 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
翻译专业应届生求职信
2013/11/23 职场文书
学生宿舍管理制度
2014/01/30 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
迟到检讨书
2015/01/26 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
慰问信(范文3篇)
2019/10/23 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP