详解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中的sortable排序之后的保存状态的解决方法
Jan 28 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
Nov 20 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
javascript检测两个数组是否相似
May 19 Javascript
jQuery插件zepto.js简单实现tab切换
Jun 16 Javascript
layui表格实现代码
May 20 Javascript
JS轮播图实现简单代码
Feb 19 Javascript
vue.js实现标签页切换效果
Jun 07 Javascript
详解vue中组件参数
Jul 09 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
Sep 03 Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
PHP的FTP学习(二)[转自奥索]
2006/10/09 PHP
php修改时间格式的代码
2011/05/29 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
php实现文件预览功能
2017/05/23 PHP
JSON 学习之完全手册 图文
2007/05/29 Javascript
JavaScript中的Document文档对象
2008/01/16 Javascript
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
python利用datetime模块计算时间差
2015/08/04 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
django如何自己创建一个中间件
2019/07/24 Python
python自动点赞功能的实现思路
2020/02/26 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
数控技术学生的自我评价
2014/02/15 职场文书
人事专员岗位说明书
2014/07/29 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
先进事迹材料范文
2014/12/29 职场文书
民事上诉状范文
2015/05/22 职场文书
2015年英语教学工作总结
2015/05/25 职场文书