» 2009-9-12 21:28:11 已被归档于 读书笔记
Arguments对象是一个集合,可以按照数字下标获取传递给函数的参数值.
例如:arguments.length可以获得传递过来的实参数量.
看书时发现对|arguments还是不太了解.于是搜索了一下相关.发现下面的这篇文章还比较通俗点:
http://www.xiaoxiaozi.com/2009/06/10/827/
在javascript函数体内,标识符arguments具有特殊含义。它是调用对象的一个特殊属性,用来引用Arguments对象。Arugments对象就像数组,注意这里只是像并不是。
javascript函数体内,arguments像数组(并不是真的数组,是一个Arguments对象,再次强调)一样,有length属性,可以代表传给函数的参数的个数.引用一个形式参数可以用参数名,也可以用arguments[]数组形式,其中arguments[0]表示第一个参数。
arguments.length属性:
js不会主动为你判断你到底给函数传了多少个参数,如果你多传了,多余的部分就没有被使用,如果你少传了,那么没传的参数值就是undefined,所以我们可以借助arguments的length属性来检测调用函数时是否使用了正确数目的实际参数,因为javascript是不会为你做这些事的
arguments还为我们提供了这样一种可能,就是为一个函数传任意数目的实际参数:
比如说,我想判断你传给我的一些数字的大小,取出最大的那个,对,没错,你传多少参数都行,但是前提是你要传数字,因为我在函数内部懒得判断了.
copy
code:
code:function max()
{
//根据我上一篇日志,这已经是JavaScript内最小的数字了
var m = Number.NEGATIVE_INFINITY;
for(var i = 0; i < arguments.length; i++)
{
//只要有任何一个参数比m大,那么m就变成了这个参数的值
if(arguments[i] > m)
m = arguments[i];
}
return m;
}
说明一下arguments与真正传的形式参数是一致的:
比如,你给函数传了一个叫param的参数,并且只有这一个参数,那么param与arguments[0]都是对这个参数值的引用,改变其中一个值,即改变了二者所有的值.
简单的函数应用:
copy
code:
code:<script type="text/javascript">
//用函数直接量,采用arguments.callee属性实现递归函数
document.write((function(x){if(x<=1) return 1;return x*arguments.callee(x-1);})(10));
</script>小小子写的另一篇也不错:javascript 函数的方法call()和apply()
本站的UBB编辑是自己编写的.哎.所以对文字比较多的文章排不版,惭愧- -!!