JS中“arguments对象”是什么?
发布网友
发布时间:2022-04-23 09:04
我来回答
共3个回答
懂视网
时间:2022-04-20 12:19
一.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可)。
Js代码
Array.prototype.testArg = "test";
function funcArg() {
alert(funcArg.arguments.testArg);
alert(funcArg.arguments[0]);
}
alert(new Array().testArg); // result: "test"
funcArg(10); // result: "undefined" "10"
二.arguments对象的长度是由实参个数而不是形参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。对于arguments和值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况下,对于此无值的情形值不会得以同步。如下代码可以得以验证。
Js代码
function f(a, b, c){
alert(arguments.length); // result: "2"
a = 100;
alert(arguments[0]); // result: "100"
arguments[0] = "qqyumidi";
alert(a); // result: "qqyumidi"
alert(c); // result: "undefined"
c = 2012;
alert(arguments[2]); // result: "undefined"
}
f(1, 2);
三.由JavaScript中函数的声明和调用特性,可以看出JavaScript中函数是不能重载的。
根据其他语言中重载的依据:"函数返回值不同或形参个数不同",我们可以得出上述结论:
第一:Javascript函数的声明是没有返回值类型这一说法的;
第二:JavaScript中形参的个数严格意义上来讲只是为了方便在函数中的变量操作,实际上实参已经存储在arguments对象中了。
另外,从JavaScript函数本身深入理解为什么JavaScript中函数是不能重载的:在JavaScript中,函数其实也是对象,函数名是关于函数的引用,或者说函数名本身就是变量。对于如下所示的函数声明与函数表达式,其实含以上是一样的(在不考虑函数声明与函数表达式区别的前提下),非常有利于我们理解JavaScript中函数是不能重载的这一特性。
Js代码
function f(a){
return a + 10;
}
function f(a){
return a - 10;
}
// 在不考虑函数声明与函数表达式区别的前提下,其等价于如下
var f = function(a){
return a + 10;
}
var f = function(a){
return a - 10;
}
四.arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。
如下:
Js代码
function count(a){
if(a==1){
return 1;
}
return a + arguments.callee(--a);
}
var mm = count(10);
alert(mm);
热心网友
时间:2022-04-20 09:27
函数体内标识符arguments指向实参象引用实参象类数组象 arguments[0]arguments.length
arguments?
答:1:arguments收实参副本
词析, 首先按形参形AO属性,值undefined
实参传, 再修改AO相应属性.
2:并所收实参收集起,放arguments象
t(a,b,c){},
调用: t(1,2,3,4,5) 5参数
, AO属性a,bc,3属性, arguments1,2,3,4,5, 所值
于超形参数外实参, 通arguments获
3:arguments 索引 0, 1,2,....递增,与实参逐应
4:arguments.length 属性代表实参数
5:arguments定数组, 比较像数组象,虽length属性
6:arguments每函数都,,arguemnts内部找自身arguments,
引用外层arguments
<script type="text/javascript">
// 求圆形面积,矩形面积, 三角形面积
function area () {
if(arguments.length == 1) {
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]);
} else {
return null;
}
}
area(10,20,30);
</script>
热心网友
时间:2022-04-20 10:45
参考下我的js笔记
在函数体内,标识符arguments是指向实参对象的引用,实参对象是一个类数组对象 arguments[0],arguments.length
arguments是什么?
答:1:arguments是收到的实参副本
在词法分析中, 首先按形参形成AO的属性,值为undefined
当实参传来时, 再修改AO的相应属性.
2:并把所有收到实参收集起来,放到一个arguments对象里
t(a,b,c){},
调用时: t(1,2,3,4,5) 5个参数
此时 , 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,
无法引用到外层的arguments
<script type="text/javascript">
// 求圆形面积,矩形面积, 三角形面积
function area () {
if(arguments.length == 1) {
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]);
} else {
return null;
}
}
area(10,20,30);
</script>
什么是JS中的arguments对象
在函数体内,标识符arguments是指向实参对象的引用,实参对象是一个类数组对象 arguments[0],arguments.length arguments是什么?答:1:arguments是收到的实参副本 在词法分析中, 首先按形参形成AO的属性,值为undefined 当实参传来时, 再修改AO的相应属性.2:并把所有收到实参收集起来,放到一个arguments对象...
js arguments
arguments是属于js下的一个中函数内置的一个对象,而执行函数方法的实参中的值都存储于arguments中。简单来说,arguments是属于对象的一个特殊属性,arguments对象就好像是数组,但是它却并不是数组。其中argument对象包含了函数调用的参数数组,通过这种方式就能够很便捷的找到最后一个参数的值。此外,arguments...
你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?
JavaScript中,Arguments对象是一个特殊的类数组对象,它记录了函数调用时传递的实际参数。通过使用Arguments,可以提升函数的灵活性和适应性。接下来,我们总结了Arguments对象的主要用途。1. 获取实参和形参的个数:使用arguments.length属性可以获取函数的实参个数,函数对象的length属性则用于获取函数的形参个...
什么是JS中的arguments对象
这个叫传参数组;里面包含了这个函数的所有传参,并且排列成一个数组。
arguments是什么
arguments是一个类数组对象。代表传给一个function的参数列表。arguments对象是函数内部的本地变量。arguments对象并不是一个真正的 Array 。它类似于数组,但没有数组所特有的属性和方法,除了 length 。虽然,它不是数组,但是你可以把它变成数组,比如:varargs=Array.prototype.slice.call(arguments);用...
arguments怎么读
arguments是收到的实参副本,在词法分析中,首先按形参形成AO的属性,值为undefined当实参传来时,再修改AO的相应属性。length,获取arguments对象的长度。callee,引用当前正在执行的函数。其实callee对于没有命名的函数调用自身时就是一个福音了,比如对于没有命名的函数求1到n自然数之和。
js新手求助:Uncaught TypeError: Cannot read property '1' of...
arguments是参数,在你的function中传进去的参数。第一中情况的arguments是你getComputedStyle(arguments[0],false)的属性,它没有arguments属性或arguments的个数小于2,当然会出错了,而第二种情况是把你传进去的参数作为属性穿进去的所以正确。如果你不明白,那换另一种说法:假如你有对象obj,那么第一种...
js中arguments和event的关系
arguments表示的是传进来的参数,第一个参数arguments[0],第二个arguments1[1]比如:function a(){//这里没有写接受参数 } 但是下面却有传参 a(1,2,3)那么就可以用 arguments[0],arguments[1],arguments[2]获取到值
Javascript中判断变量是数组还是对象(array还是object)
答案:1、如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'。此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0)。然而,参数对象【arguments object】(传给制定函数的所有参数),也可能会适用于上述方法,技术上...
巨难的JS脚本引用问题,这段代码如何理解
arguments对象用来访问函数的参数,比如:function test(){ for(var i=0;i<arguments.length;i++)document.write(arguments[i]+"");} 调用语句:test("first","second","third");输出的结果就是first second third 你的输入参数可以是很多个,arguments利用下标,可以自动获取输入参数的值(按照参数...