arguments对象,caller 和 callee
2024-08-22 08:20:01
arguments对象是比较特别的一个对象,arguments非常类似Array,但实际上又不是一个Array实例。
它指的是函数对象里的参数,且只能在函数内部使用。
使用
检测函数的参数个数,引用属性 arguments.length。
访问:arguments[0]
1.arguments对象的长度是由实参个数而不是形参个数决定的。
function a(a,b,c){
console.log(arguments.length)
console.log(arguments[3])
b=b-a;
console.log(b)
}
a(1,2);//2 undefined 1
2.JavaScript中函数是不能重载的。
如何实现重载呢?
function fn(){
switch(arguments.length){
case 0:
//执行语句块
break;
case 1:
//执行语句块
break;
case 2:
//执行语句块
break;
}
}
3.arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。
function a(a){
if(a==1){return 1}
return a+arguments.callee(--a);
}
a(10);//
function ass(a,b,s){
console.log(arguments.callee.length);
console.log(arguments.length);
}
assl(1,2);//3 2
arguments.length是实参长度,arguments.callee.length是形参长度
caller 返回一个函数的引用,这个函数调用了当前的函数。
使用这个属性要注意:
1 这个属性只有当函数在执行时才有用
2 如果在javascript程序中,函数是由顶层调用的,则返回null
function b(){
a()
}
function a(){
alert(a===arguments.callee);//true
alert(arguments.caller=b);//function b(){a()}
alert(arguments.callee.caller===b);//true
}
b();
var a = function() {
alert(a.caller); //null
}
a();
var a = function() {
alert(arguments.callee);
}
a();//var a = function() { alert(arguments.callee); }
最新文章
- sqlserver行列转换问题(网上搜集)
- 期望+DP ZOJ 3929 Deque and Balls
- xcode报错:Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/b
- 数据文件 和日志文件 收缩 Sql Server
- iOS cell自动换行
- HtmlParser基础教程
- C#创建服务及使用程序自动安装服务
- mysql去重的最方便的两种方法
- Hibernate框架 初识 ORM概念 搭建Hibernate环境 Hibernate Api
- 201521123039《Java程序设计》 第二周学习总结
- Webpack 2 视频教程 014 - 深入理解 Webpack 2 中的 loader
- Spark:spark df插入hive表后小文件数量多,如何合并?
- STM32 - SYSTICK(系统滴答定时器)
- python之定义类创建实例
- 环境与工具1:微信群刷屏 | itchat
- Python conda安装 并安装Tensorflow
- android xml组建圆角背景设置
- 【刷题】AtCoder Regular Contest 002
- Windows 7中200M神秘隐藏分区
- 在SharePoint解决方案中使用JavaScript (0)