JavaScript arguments对象(转载)

1、在JavaScript中,arguments对象是比较特别的一个对象,实际上是 当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。可以通过如下代码得以证实(当然,实际上,在函数 funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可)。

1 Array.prototype.testArg = "test";
2 function funcArg() {
3     alert(funcArg.arguments.testArg);
4     alert(funcArg.arguments[0]);
5 }
6
7 alert(new Array().testArg); // result: "test"
8 funcArg(10);                // result: "undefined"  "10"

2、arguments对象的长度是由实参个数而不是形参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象 内存空间并不重叠。对于arguments和值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况下,对于此无值的情形值不会得以同步。如下代 码可以得以验证。

 1 function f(a, b, c){
 2     alert(arguments.length);   // result: "2"
 3     a = 100;
 4     alert(arguments[0]);       // result: "100"
 5     arguments[0] = "qqyumidi";
 6     alert(a);                  // result: "qqyumidi"
 7     alert(c);                  // result: "undefined"
 8     c = 2012;
 9     alert(arguments[2]);       // result: "undefined"
10 }
11
12 f(1, 2);

3、由JavaScript中函数的声明和调用特性,可以看出JavaScript中函数是不能重载的。

根据其他语言中重载的依据:"函数返回值不同或形参个数不同",我们可以得出上述结论:

第一:Javascript函数的声明是没有返回值类型这一说法的;

第二:JavaScript中形参的个数严格意义上来讲只是为了方便在函数中的变量操作,实际上实参已经存储在arguments对象中了。

另外,从JavaScript函数本身深入理解为什么JavaScript中函数是不能重载的:在JavaScript中,函数其实也是对象,函数 名是关于函数的引用,或者说函数名本身就是变量。对于如下所示的函数声明与函数表达式,其实含以上是一样的(在不考虑函数声明与函数表达式区别的前提 下),非常有利于我们理解JavaScript中函数是不能重载的这一特性。

 1 function f(a){
 2     return a + 10;
 3 }
 4
 5 function f(a){
 6     return a - 10;
 7 }
 8
 9 // 在不考虑函数声明与函数表达式区别的前提下,其等价于如下
10
11 var f = function(a){
12     return a + 10;
13 }
14
15 var f = function(a){
16     return a - 10;
17 }

4、arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

如下:

1 function count(a){
2     if(a==1){
3         return 1;
4     }
5     return a + arguments.callee(--a);
6 }
7
8 var mm = count(10);
9 alert(mm);

时间: 2024-10-13 04:48:41

JavaScript arguments对象(转载)的相关文章

javascript Arguments对象之length、callee属性

1.length属性,我们可以利用Arguments对象的length属性来获取实际传递进的参数有几个. function a(x, y, z) { //arguments.callee指向函数a(),arguments.callee.length==a.length; alert(arguments.callee.length); //输出5 alert(arguments.length); if (arguments.callee.length != arguments.length) {

JavaScript arguments对象

1.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性.arguments非常类似Array,但实际上又不是一个Array实例.可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可). 1 Array.prototype.testArg = "test"; 2 function funcArg() { 3 alert(funcA

javascript arguments对象研究--针对jquery源码研究再研究

外部插件: $.fn.tinytip = function(text, customOptions) { debugger; if (text && typeof text === 'object'){ customOptions = text; text = customOptions.tooltip; } var options = $.extend({}, tooltip_options, customOptions); options.tooltip = text; if (typ

javascript Arguments对象——函数的实际参数

在javascript函数体内,标识符arguments具有特殊含义.它是调用对象的一个特殊属性,用来引用Arguments对象. Arugments对象就像数组,注意这里只是像并不是哈. javascript函数体内,arguments像数组(并不是真的数组,是一个Arguments对象,再次强调)一样,有length属性,可以代表传给函数的参数的个数. 引用一个形式参数可以用参数名,也可以用arguments[]数组形式,其中arguments[0]表示第一个参数. 所以,javascrip

JavaScript arguments对象浅析

arguments对象 概念 用法 属性 arguments对象 概念 arguments 是一个类数组对象.代表传给一个function的参数列表. 用法 function a() { console.log(arguments); } a("A", "b", 1); 输出 ["A", "b", 1] 属性 arguments.callee 指向当前执行的函数. 递归中常用,避免函数修改后出错,提高代码的安全性.稳定性. a

JavaScript arguments 对象

1.arguments当然只在function体内才有意义, arguments.length 返回的是传入function的实参个数. <script type="text/javascript"> window.onload = function() { (function(arg1, arg2) {      alert(arguments.length); //0    alert(arguments.callee.length);//2 })(); } </

函数中的 arguments 对象

JavaScript函数具有像数组一样的对象,这些对象称为arguments,与传递给函数的参数相对应.传递给JavaScript函数的所有参数都可以使用arguments对象来引用. 现在我们开始学习,仔细看下面列出的代码: function add(num1, num2) { var res = num1 + num2; return res; } var r = add(7, 8); console.log(r); 在上面的函数中,num1和num2是两个参数.你可以使用名为num1和nu

JavaScript 没有函数重载&amp;Arguments对象

对于学过Java的人来说,函数重载并不是一个陌生的概念,但是javaScript中有函数重载么...接下来我们就进行测试 <script type="text/javascript"> //JavaScript不存在函数重载现象 var add=function(a,b){ return a+b; } var add=function(a,b,c){ return a+b+c; } <span style="white-space:pre">

JavaScript的arguments对象

1.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性.arguments非常类似Array,但实际上又不是一个Array实例.可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可). 1 Array.prototype.testArg = "test"; 2 function funcArg() { 3 alert(funcA