callee
首先解释callee
参考网站 http://www.css88.com/archives/1706
callee是arguments的一个成员,仅当函数正在执行的时候才可用,so用于递归也行
代码示例:
(function () {
function calleeDemo() {
console.log(arguments.callee);
}
calleeDemo();
})();
结果输出

它的应用:
一、判断形参和实参的长度是否一致
实参 arguments.length
形参 arguments.callee.length
代码示例:
function judgeParameterLength(arg1,arg2) {
if (arguments.length==arguments.callee.length){
console.log("形参与实参长度一致");
}else {
console.log("实参长度"+arguments.length,"形参长度"+arguments.callee.length);
}
}
judgeParameterLength(1,2); //形参与实参长度一致
judgeParameterLength(1); //实参长度1 形参长度2
二、递归
function sum(n) {
if (n == 1)
return 1;
else
return n + arguments.callee(n - 1);
}
console.log(sum(10)); //
常规写法
function sum(n) {
if (1 == n)
return 1;
else
return n + sum(n - 1);
}
console.log(sum(10)); //
理解:
两者结果是一样的。
非要找区别的话,正如我参考的那个网站,callee更能体现是调用自身的方法。
而我个人的理解是,这点还防止了方法重名造成的危害,毕竟js没有重载╮(╯▽╰)╭
所以还是写callee比较好。。
callee的更多相关文章
- js callee,caller学习
原文地址:js callee,caller学习 /* * caller 返回一个对函数的引用,该函数调用了当前函数. * 如果函数是由顶层调用的,那么 caller包含的就是 null . * 如果在 ...
- js中的caller和callee属性
caller返回一个对函数的引用,该函数调用了当前函数. functionName.caller functionName 对象是所执行函数的名称. 说明对于函数来说,caller 属性只有在函数执行 ...
- JavaScript Arguments.callee解释
Arguments.callee : 返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文.[function.]arguments.callee可选项 functio ...
- 搞清arguments,callee,caller
arguments是什么? arguments是函数调用时,创建的一个类似的数组但又不是数组的对象,并且它存储的是实际传递给函数的参数,并不局限于函数声明的参数列表哦. 尼玛,什么意思? 写个demo ...
- JavaScript方法call、apply、caller、callee、bind的使用详解及区别
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即 “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...
- Js中caller和callee的区别
1 :caller 返回一个调用当前函数的引用 如果是由顶层调用的话 则返回null (举个栗子哈 caller给你打电话的人 谁给你打电话了 谁调用了你 很显然是下面a函数的执行 只有在打电话的时 ...
- JS:callee属性
函数内部属性:在函数内部,有两个特殊的对象:arguments和this. arguments有一个callee属性,该属性是一个指针,指向拥有这个arguments对象的函数. function f ...
- JavaScript方法call,apply,caller,callee,bind的使用详解及区别
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即 “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...
- 【笔记】js Function类型 内部方法callee
运用function实现阶乘 以往的做法是如下的 function factorial(num){ if(num <= 1){ return 1; }else{ return num * fac ...
- arguments.callee的用法
argument为函数内部对象,包含传入函数的所有参数,arguments.callee代表函数名,多用于递归调用,防止函数执行与函数名紧紧耦合的现象,对于没有函数名的匿名函数也非常起作用.举例如下: ...
随机推荐
- CSS手动制作三角形图标
1.需要哪个三角形就 <meta charset="UTF-8"> <title>Title</title> <style> div ...
- ASP.NET MVC视图中的@Html.xxx(...)
问题 在视图页中@Html.xxx(...)是什么?如何被执行? 如下图所示: 解疑 视图页中@Html.xxx(...)涉及的内容有: 视图页被编译后的类继承自 WebViewPage<T&g ...
- iOS10权限声明国际化
iOS 10要求用户声明隐私访问用途,而且不能为空,否则将会被拒.被拒邮件如下: 解决办法是在Info.plist中添加Privacy - Camera Usage Description和Priva ...
- C# App.config文件配置数据的读写
添加程序集引用 System.configuration.dll 和命名空间 using System.Configuration; 读: ConfigurationManager.AppSetti ...
- ReportDB数据库存储选型分析
SQLServer关于reportDB的存储选型做如下分析: 网络存储两大主要类型: 1.NAS 支持的文件传输协议:NFS(unix/linux文件共享).SMB(windows).samba(li ...
- VS2010调试Qt5的相关设置
1.windows环境,下载离线安装包安装: 2.安装Qt5 Visual Studio Add-in并安装: 3.环境变量里设置QTDIR=D:\LIB\Qt\Qt5.3.2\5.3\msvc201 ...
- RunTime的一些用法
RunTime的一些用法 RunTime简介 RunTime简称运行时.OC就是运行时机制,其中最主要的是消息机制 对于OC来说,在编译的时候并不能决定真正调用哪个函数,只有真正运行时才会根据函数 ...
- 图论$\cdot$2-SAT问题
2-SAT问题是这样的:有$n$个布尔变量$x_i$,另有$m$个需要满足的条件,每个条件的形式都是“$x_i$为真/假或者$x_j$为真/假”.比如:"$x_1$为真或者$x_3$为假“. ...
- 添加一个DataSet
/// <summary> /// 返回状态数据 /// </summary> /// <param name="values"></pa ...
- hadoop2.0初识1.3
1.配置分布式hadoop 1.1 准备三台测试机(虚拟机就可以) 1.1.1 将life-hadoop虚拟机克隆2个分别为life-hadoop02和life-hadoop03 1.1.2 查看ip ...