什么是JS中的arguments对象
发布时间:2025-05-23 16:38:18 发布人:远客网络
一、什么是JS中的arguments对象
在函数体内,标识符arguments是指向实参对象的引用,实参对象是一个类数组对象 arguments[0],arguments.length
答:1:arguments是收到的实参副本
在词法分析中,首先按形参形成AO的属性,值为undefined
当实参传来时,再修改AO的相应属性.
2:并把所有收到实参收集起来,放到一个arguments对象里
此时, AO属性只有a,bc,3个属性, arguments里有1,2,3,4,5,所有的值
对于超出形参个数之外的实参,可以通过arguments来获得
3:arguments的索引从 0, 1,2,....递增,与实参逐个对应
4:arguments.length属性代表实参的个数
5:arguments一定不是数组,是长的比较像数组的一个对象,虽然也有length属性
6:arguments每个函数都会有,因此,arguemnts只会在内部找自身的arguments,
<script type="text/javascript">
//求圆形面积,矩形面积,三角形面积
alert(3.14* arguments[0]* arguments[0]);
} else if(arguments.length== 2){
alert(arguments[0]* arguments[1]);
} else if(arguments.length== 3){
alert(arguments[0]+ arguments[1]+ arguments[2]);
二、JavaScript中的Arguments对象
JavaScript中的Arguments对象
arguments是一个对应于传递给函数的参数的类数组(array-like)对象。arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。
arguments是一个对应于传递给函数的参数的类数组(array-like)对象。arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。
对arguments对象常见的操作有三种:
callee获取当前arguments所在的函数
console.log(arguments.callee)打印结果:
arguments对象不是一个Array。它类似于Array,但除了length属性和索引元素之外没有任何Array属性。例如,它没有pop方法。但是它可以被转换为一个真正的Array:
//方法二:Array.prototype.slice将arguments转成arrayvarnewArr2=Array.prototype.slice.call(arguments)console.log(newArr2)//也可以直接使用一个空数组[]varnewArr3=[].slice.call(arguments)console.log(newArr3)
//方法三:ES6的语法varnewArr4=Array.from(arguments)console.log(newArr4)//也可以使用展开运算符(spreadoperator)varnewArr5=[...arguments]console.log(newArr5)}
剩余参数语法允许我们将一个不定数量的参数表示为一个数组。语法:
描述:如果函数的最后一个命名参数以...为前缀,则它将成为一个由剩余参数组成的真数组,其中从0(包括)到theArgs.length(排除)的元素由传递给函数的实际参数提供。示例代码如下:
三、js 函数怎么设置默认参数
1.php有个很方便的用法是在定义函数时可以直接给参数设默认值,如:
但js却不能这么定义,如果写function simue(a=1,b=2){}会提示缺少对象。
2.js函数中有个储存参数的数组arguments,所有函数获得的参数会被编译器挨个保存到这个数组中。于是我们的js版支持参数默认值的函数可以通过另外一种变通的方法实现,修改上例:
var a= arguments[0]? arguments[0]:
var b= arguments[1]? arguments[1]: