详解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 相关文章推荐
javaScript 关闭浏览器 (不弹出提示框)
Jan 31 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
Aug 11 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
Jun 20 Javascript
jQuery复制节点用法示例(clone方法)
Sep 08 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
Oct 14 Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 Javascript
基于对象合并功能的实现示例
Oct 10 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 Javascript
基于vue hash模式微信分享#号的解决
Sep 07 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
php 全局变量范围分析
2009/08/07 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
python进阶教程之模块(module)介绍
2014/08/30 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
餐厅销售主管职责范本
2014/02/19 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
Python 可迭代对象 iterable的具体使用
2021/08/07 Python