详解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 相关文章推荐
js时间日期和毫秒的相互转换
Feb 22 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
Jun 06 Javascript
js删除数组元素、清空数组的简单方法(必看)
Jul 27 Javascript
JavaScript 函数模式详解及示例
Sep 07 Javascript
浅谈React 属性和状态的一些总结
Nov 21 Javascript
js实现拖拽上传图片功能
Aug 01 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
原生js添加一个或多个类名的方法分析
Jul 30 Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 Javascript
Vue项目接入Paypal实现示例详解
Jun 04 Javascript
js 实现验证码输入框示例详解
Sep 23 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
python获取糗百图片代码实例
2013/12/18 Python
Python操作MySQL简单实现方法
2015/01/26 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
python合并同类型excel表格的方法
2018/04/01 Python
python全栈知识点总结
2019/07/01 Python
Django分页功能的实现代码详解
2019/07/29 Python
django实现支付宝支付实例讲解
2019/10/17 Python
Python实现把类当做字典来访问
2019/12/16 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
面包店的创业计划书范文
2014/01/16 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android