码迷,mamicode.com
首页 > Web开发 > 详细

JS一步一步之Arguments

时间:2014-11-27 18:51:08      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:arguments   callee   length   

1、arguments[]数组只在函数体内定义。在函数体内,arguments引用该函数的Arguments对象,该对象有带有编号的属性,并作为一个存放传递给函数的所有参数的数组。标识符arguments本质是一个局部变量,在每个函数中都会被自动声明并被初始化。它只在函数体中才能引用Arguments对象,在全局代码中没有定义。

function arg(a,b){
    if(arguments[0]){
        alert(arguments[0]);
    }
    if(arguments[1]){
        alert(arguments[1]);
    }
}

2、Arguments对象只在函数体中定义。虽然技术上说,它不是数组,但Arguments对象有带编号的属性,这些属性可以作为数组元素,而且他有length属性,该属性声明了数组元素的个数。它的元素是作为参数传递给函数的值。元素0是第一个参数,所有作为参数传递的值都会成为Arguments对象的数组元素,无论函数声明中是否有这些参数。

3、arguments.callee属性引用当前正在运行的函数(无论函数是否命名,都可以使函数引用自身)。该属性只有在函数体内被定义。

var fac=function(a){
    if(a<2)
        return 1;
    else
        return a*arguments.callee(a-1);
}

var y=fac(5);

4、arguments.length属性 传递给当前函数的个数。这个属性声明的是实际传递给函数的参数个数

function check(args){
    var actual=args.length;
    var expected=args.callee.length;
    if(actual != expected){
        throw new Error("Wrong number of arguments:extected: "+expected +"; actually passed: "+actual);
    }
}

function f(x,y,z){
    check(arguments);
    return x+y+z;
}


参照:JavaScript权威指南

JS一步一步之Arguments

标签:arguments   callee   length   

原文地址:http://zhiaidql.blog.51cto.com/6965969/1583195

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!