初学js的时候,对arguments这个东西常见,就是搞不清他的意思~ 下面是我找到的一些资料和我的理解,终于弄懂了这个家伙

首先arguments指向实参对象

  在函数体内,标识符arguments是指向实参对象的引用,实参对象是一个类数组对象 arguments[0],arguments.length,类数组不是数组,虽然也有数组的前面这两种属性,具体判断可以使用instanceof来判断一下

instanceof 用于判断一个实例是否是某种类型
在 typeof 方法返回 “object” 的情况下,instanceof 方法还是很有用的。
arrayLike instanceof Array

 // false
其值是布尔值那么问题来了

arguments是什么?
1.  arguments是收到的实参副本
  在词法分析中, 首先按形参形成AO的属性,值为undefined
  当实参传来时, 再修改AO的相应属性.
2:并把所有收到实参收集起来,放到一个arguments对象里
  function t(a,b,c){},
  调用时: t(1,2,3,4,5) 5个参数,这里传入了5个参数
  此时 , AO属性只有a,bc,3个属性, 但是arguments里有1,2,3,4,5, 所有的值,这个arguments就用来存储传入的所有参数

  对于超出形参个数之外的实参, 可以通过arguments来获得
3.   arguments 的索引 从 0, 1,2,....递增,与实参逐个对应
4.  arguments.length 属性代表实参的个数
5.  arguments一定不是数组, 是长的比较像数组的一个对象,虽然也有length属性
  6:arguments每个函数都会有,因此,arguemnts只会在内部找自身的arguments,
  无法引用到外层的arguments
 

 1  <script type="text/javascript">
 2   // 求圆形面积,矩形面积, 三角形面积
 3   function area () {
 4   if(arguments.length == 1) {
 5   alert(3.14 * arguments[0] * arguments[0]);
 6   } else if(arguments.length == 2) {
 7   alert(arguments[0] * arguments[1]);
 8   } else if(arguments.length == 3) {
 9   alert(arguments[0] + arguments[1] + arguments[2]);
10   } else {
11   return null;
12   }
13   }
14   area(10,20,30);
15   
16   </script>

下面是W3C上的一些解释

arguments 对象

在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。

因此,无需明确命名参数,就可以重写函数:

function sayHi() {

if (arguments[0] == "bye") {

return;

}

alert(arguments[0]);

}

检测参数个数

还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。

下面的代码将输出每次调用函数使用的参数个数:

 1 function howManyArgs() {
 2
 3   alert(arguments.length);
 4
 5 }
 6
 7
 8
 9 howManyArgs("string", 45);
10
11 howManyArgs();
12
13 howManyArgs(12);

上面这段代码将依次显示 "2"、"0" 和 "1"。

注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。

转载于:https://www.cnblogs.com/nostic/p/5406472.html

js 的arguments的一些理解资料相关推荐

  1. [js] 说说你对js对象生命周期的理解

    [js] 说说你对js对象生命周期的理解 一切皆对象 咱们经常听到JS中"一切皆对象"?有没有问想过这是什么意思?其它语言也有"一切皆对象"之说,如Python ...

  2. js 添加属性_轻松理解JS中的面向对象,顺便搞懂prototype和__proto__

    这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道, ...

  3. js中arguments的理解

    一.在函数调用的时候,浏览器每次都会传递进来两个隐式参数 1.函数的上下文对象this 2.封装实参的对象arguments 二.arguments对象 1.arguments对象实际是所在函数的一个 ...

  4. js中arguments理解

    什么是arguments? 它是JS的一个内置对象 .函数内部的类数组对象.因为在js函数对象中传递的形参 可以传也可以不传,若方法里没有写参数却传入了参数,该如何拿到参数呢,答案就是argument ...

  5. 探究js中arguments

     类数组对象:arguments 总所周知,js是一门相当灵活的语言.当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做argume ...

  6. Js中匿名函数的理解

    目录 1.js中匿名函数的N种写法 最常见的用法: 2.JavaScript 匿名函数及闭包 2.1 匿名函数 2.1.1 函数的定义 2.1.2 匿名函数的创建 2.2 闭包 2.3 举例 2.4 ...

  7. js的arguments到底是什么?

    类数组对象:arguments 众所周知,js是一门相当灵活的语言.当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments ...

  8. JS中同步与异步的理解

    你应该知道,javascript语言是一门"单线程"的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条 ...

  9. JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后

    Brief 一天有个朋友问我"JS中计算0.7 * 180怎么会等于125.99999999998,坑也太多了吧!"那时我猜测是二进制表示数值时发生round-off error所 ...

  10. js 闭包及其相关知识点理解

    本文结合个人学习及实践,对闭包及相关知识点进行总结记录,欢迎读者提出任何不足之处 一.js变量 二.作用域(scope) 三.[[scope]] 和 scope chain 四.作用域(scope)和 ...

最新文章

  1. jasonrpcbridge
  2. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务
  3. Flask详解(中篇)
  4. Tomcat内存溢出的三种情况及解决办法分析
  5. Spreadjs表格
  6. 登录SYSTEM账户 Windows黑科技 首创方法 教程附源码(c++)
  7. mysql 表间关联查询
  8. 面试经典-你为什么觉得自己能够在这个职位上取得成就?
  9. 电子合同的一个“安全漏洞”
  10. 活动详情页面html代码,折扣活动详情.html
  11. PMP证书好考吗?难度如何?
  12. 【软考 系统架构设计师】计算机网络② 网络规划与设计
  13. 每日面试1题-如何防止CDN防护被绕过
  14. 浅谈滴滴需求响应式公交背后的技术
  15. 伊登软件BPM/EIP解决方案
  16. 总体规划,循序渐进,分步实施
  17. php获取中文拼音(含生僻字,多音字,音标)支持首字母,全拼
  18. 打印机共享0x00000709错误
  19. 华为HiLink 云云对接 后台开发的一些细节和坑
  20. 零基础的我刷力扣一周后,总结了点东西

热门文章

  1. 鸿蒙升级最佳时间,鸿蒙升级时间确定,17款华为优先,荣耀或成遗珠!
  2. 电脑qq浏览器怎么滚动截长图_电脑怎么快速截图?
  3. 安装semantic-text-similarity
  4. 用python代码将原图转化为手绘图
  5. python交互式换行_如何在Python中进行换行(换行)?
  6. 写好PPT的四大要点
  7. 以太网安全技术ACL原理+配置
  8. 修炼Python基础篇-字典(Dictionary)学习
  9. iOS中 百度地图详解
  10. QT、C++面试中的几个问题