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); }

 

最新文章

  1. sqlserver行列转换问题(网上搜集)
  2. 期望+DP ZOJ 3929 Deque and Balls
  3. xcode报错:Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/b
  4. 数据文件 和日志文件 收缩 Sql Server
  5. iOS cell自动换行
  6. HtmlParser基础教程
  7. C#创建服务及使用程序自动安装服务
  8. mysql去重的最方便的两种方法
  9. Hibernate框架 初识 ORM概念 搭建Hibernate环境 Hibernate Api
  10. 201521123039《Java程序设计》 第二周学习总结
  11. Webpack 2 视频教程 014 - 深入理解 Webpack 2 中的 loader
  12. Spark:spark df插入hive表后小文件数量多,如何合并?
  13. STM32 - SYSTICK(系统滴答定时器)
  14. python之定义类创建实例
  15. 环境与工具1:微信群刷屏 | itchat
  16. Python conda安装 并安装Tensorflow
  17. android xml组建圆角背景设置
  18. 【刷题】AtCoder Regular Contest 002
  19. Windows 7中200M神秘隐藏分区
  20. 在SharePoint解决方案中使用JavaScript (0)

热门文章

  1. JSON文件处理
  2. haproxy(1)
  3. Aa3.0 事件机制
  4. crontab记录
  5. SQL LIKE语句多条件贪婪匹配算法
  6. Swift2.3适配Swift3.0时出现的各种问题
  7. LoadRunner参数值定义-摘自一米阳光
  8. Ubuntu操作相关笔记
  9. 第一章 flume架构介绍
  10. Struts2第二天