详解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焦点图片切换(数字标注/手动/自动播放/横向滚动)
Jan 24 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
Dec 18 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
js中window.open打开一个新的页面
Aug 10 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
jquery模拟实现鼠标指针停止运动事件
Jan 12 Javascript
[原创]jQuery常用的4种加载方式分析
Jul 25 Javascript
简单理解js的冒泡排序
Dec 19 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
Jan 04 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
Dec 06 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
Apr 13 Javascript
Vue 3.0 全家桶抢先体验
Apr 28 Javascript
利用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
怎样在PHP中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
dojo 之基础篇
2007/03/24 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
jQuery实现的仿select功能代码
2015/08/19 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
Python实时获取cmd的输出
2015/12/13 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
创业计划书六个要素
2013/12/26 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
学术会议邀请函
2015/01/30 职场文书
工程催款通知书
2015/04/17 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
关于教师节的广播稿
2015/08/19 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL