YanTianFeng的知识库

Want Coding

Want Reading

文章 89

访问 18823

评论 2

头像

YanTianFeng

发私信

文章 89
访问 18823
评论 2
JAVASCRIPT
返回顶部

Knowledge  JavaScript 函数参数&Arguments

标签   Arguments  

  ( 425 )       ( 0 )


前言

JavaScript 函数调用时,对参数的值没有进行任何的检查。

参数规则

JavaScript 函数对传入参数的类型、个数都没有进行检测。这也导致在函数名不出错的情况下,函数调用很随意(传参或多或少)。

如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名。 只能使用 arguments 对象来引用。

arguments 对象

JavaScript 函数有个内置的对象: arguments 。

arguments 包含了函数调用时传入的所有参数。通过这种方式你可以很方便的得到任何一个参数的值:

function myFunction(a,b) //函数内表面上能直接引用的参数只有a,b; 分别保存有函数调用时传入的100,200                 
{                                         
    for (i = 0; i < arguments.length; i++) //arguments中保存有所有传入的参数,参数的个数
    {                                     
        console.log(arguments[i]);       
    }                                     
}                                         
                                          
myFunction(100,200,300);  //分别输出 100,200,300

arguments 对象的属性

属性 描述 使用示例
length 函数调用实际传入参数的个数 arguments.length
callee 正在执行的函数本身的引用 arguments.callee

function myFunction(a,b) 
{
    console.log(arguments.length);          //当前函数调用时传入的实参个数
    console.log(arguments.callee.length);   //当前函数形参个数      

    //通过 arguments.length == arguments.callee.length 是否成立,判断形参和实参个数是否一致
}

获取函数的形参个数: function.length

属性 callee 只有在函数执行时才有效 ( 只可以在函数内使用 ).

caller

caller 返回一个函数的引用,这个函数调用了当前的函数。

var a = function() { 
    alert(a.caller); 
};                   
var b = function() { 
    a();             
};                   
b() ;  //b调用了a,那么a.caller返回的是b的引用
a() ;  //a没有在任何函数中被调用,也就是顶层调用),返回null

这个属性只有在函数执行时才有效 ( 只可以在函数内使用 ).