`

JavaScript arguments对象

阅读更多

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

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和值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况下,对于此无值的情形值不会得以同步。如下代码可以得以验证。

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中函数是不能重载的这一特性。

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代替函数名本身。

        如下:

function count(a){
    if(a==1){
        return 1;
    } 
    return a + arguments.callee(--a);
}

var mm = count(10);
alert(mm);

 

文章来源:http://www.cnblogs.com/lwbqqyumidi/archive/2012/12/03/2799833.html

分享到:
评论

相关推荐

    javaScript arguments 对象使用介绍

    JavaScript中的`arguments`对象是一个非常实用的特性,它允许函数接收任意数量的参数,而不仅仅是预先定义好的。在JavaScript函数内部,`arguments`对象提供了一种访问这些参数的方法,无论函数声明时指定了多少参数...

    arguments对象的使用

    4. **arguments对象与形参的关系**:如果函数定义了形参,那么形参变量会自动绑定到`arguments`对象中对应的值。例如,函数`function foo(a, b) { console.log(a, b); }`调用`foo(1, 2)`时,`a`和`b`将分别得到`...

    理解Javascript函数形式参数与arguments

    arguments还有一个特殊的行为,那就是它会将所有的实际参数都当作对象来看待,对于基本数据类型的实际参数则会转换为其对应的对象类型。这可以通过在函数内定义与形式参数同名的变量并赋值来判断。在say函数中,我们...

    JavaScript核心对象参考手册

    11. **箭头函数Arrow Functions**: 箭头函数提供了一种更简洁的函数定义方式,其`this`值继承自父作用域,不绑定自己的`arguments`对象。 12. **Map 和 Set**: 这两种数据结构提供了更高效、灵活的键值对存储。Map...

    javascript内置对象arguments详解

    总结起来,arguments对象是JavaScript函数中一个非常有用的特性,尤其是在处理不确定数量参数的函数时。它虽然不是一个数组,但是提供了足够的方法来访问和操作函数的参数。通过学习如何利用arguments对象,我们可以...

    Arguments对象作用深度研究.pdf

    Arguments对象是JavaScript中一个特殊的数据结构,主要用于在函数内部存储传递给函数的所有参数。无论函数定义了多少个参数,Arguments对象都会包含所有实际传递的参数。这篇深度研究主要探讨了Arguments对象的几个...

    Javascript学习笔记之函数篇(四):arguments 对象

    JavaScript中的arguments对象是一个特殊对象,它代表当前正在执行的函数的参数集合。这个对象可以在函数体内直接使用,无须提前声明参数名即可访问参数。每一个JavaScript函数作用域内都有一个名为arguments的局部...

    Javascript中arguments对象详解

    在JavaScript编程中,arguments对象是一个非常有用的概念,尤其是在处理函数参数方面。在许多编程语言中,如PHP,函数参数可以设置默认值,这样当调用函数时,如果缺少参数,就会自动使用预设的默认值。但在...

    JavaScript的arguments对象应用示例

    JavaScript中的arguments对象是函数内预定义的一个类数组对象,它包含了传递给函数的所有参数值。尽管在现代JavaScript开发中,ES6引入了更灵活的参数处理方式,如rest参数和默认参数,但在学习和理解JavaScript时,...

    Javascript中arguments对象的详解与使用方法

    ECMAScript中的函数并不介意传递的参数有多少,也不介意是什么类型。由于JavaScript允许函数有不定数目的参数,所以我们需要一种机制,可以在 函数体内 ...这篇文章将详细介绍Javascript中的arguments对象和使用方法。

    Javascript中的arguments对象

    JavaScript中的arguments对象是一个非常有用的内置对象,它存在于所有函数体内,特别是当函数被调用时。它为函数提供了一种访问所有传递给函数的参数的方法。由于JavaScript本身不支持函数重载的机制,arguments对象...

    深入解析JavaScript中的arguments对象

    在JavaScript编程中,arguments对象是一个非常重要的内置对象,它在函数内被自动创建,用以存储函数接收到的所有参数。虽然它看起来像数组,也拥有类似数组的访问方式,但arguments并不是一个真正的数组对象,因此它...

    javascript面向对象要点总结

    ### JavaScript面向对象要点总结 在JavaScript中,面向对象编程(OOP)是一种广泛采用的编程范式,它允许开发者创建可重用、模块化的代码。本文将深入探讨JavaScript面向对象的关键概念,包括构造函数、原型链、...

    跟我学习javascript的arguments对象

    尽管它看起来和数组类似,拥有`length`属性,但它并不是真正的数组,而是一个特殊的Arguments对象。这意味着不能直接应用数组的方法如`push`, `pop`, `slice`等,但可以通过索引来访问参数值。 2. **`arguments`...

    即用即查JavaScript核心对象参考手册:JavaScript

    `arguments`对象用于访问函数调用时传入的所有参数,`call()`和`apply()`可以改变函数调用的上下文。 6. **日期和时间Date**: `Date`对象用于处理日期和时间,`new Date()`创建一个新实例,`getFullYear()`、`...

Global site tag (gtag.js) - Google Analytics