详解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控件autocomplete 0.11演示及下载 1月5日已更新
Jan 09 Javascript
使弱类型的语言JavaScript变强势
Jun 22 Javascript
javascript的document.referrer浏览器支持、失效情况总结
Jul 18 Javascript
JS+CSS实现的蓝色table选项卡效果
Oct 08 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
Aug 29 Javascript
Js自定义多选框效果的实例代码
Jul 05 Javascript
移动端效果之IndexList详解
Oct 20 Javascript
p5.js码绘“跳动的小正方形”的实现代码
Oct 22 Javascript
微信小程序后端实现授权登录
Feb 24 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 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
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
自动最大化窗口的Javascript代码
2013/05/22 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
详解Django中Request对象的相关用法
2015/07/17 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
python调用自定义函数的实例操作
2019/06/26 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
单位门卫岗位职责
2013/12/20 职场文书
大学新生欢迎词
2014/01/10 职场文书
优秀团队申报材料
2014/12/26 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers