Arguments

 

一、非数组,但有数组的特性数组

不是一个真正的数组,不能够使用数组的push\pop方法等,可是能够经过数组形式获取各个参数。能够经过转换成为真正的数函数

 

var args = Array.prototype.slice.call(arguments); //转换成真的数组 能够使用push pop等方法

 

二、Arguments对象有一个非同寻常的特性.spa

当函数具备命名了的参数时, Arguments对象的数组元素是存放函数参数的局部变量的同义词. arguments[]数组和命名了的参数不过是引用同一变量的两种不一样方法. 用参数名改变一个参数的值同时会改变经过arguments[]数组得到的值. 经过arguments[]数组改变参数的值也会相应的改变用参数名获取的参数值。prototype

function b(x, y, a) { console.log(arguments);
arguments[2] = 10; 
alert(a);  //10
console.log(arguments);
}
b(1, 2, 3);  


function bb(x, y, a) { 
a = 10;
alert(arguments[2] );  //10
}
bb(1,2,3);
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;                  //c这里是形参中的变量 不可做为全局变量
    alert(arguments[2]);       // result: "undefined"
}

f(1, 2);
alert(c);  //c in not defined

 三、arguments.callee指向函数自身code

arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名自己。对象

相关文章
相关标签/搜索