1.arguments: an array-like object(像数组的对象,可以使用数组的length方法,不可以使用push,pop方法)
·arguments叫做函数内部的期望参数,而调用该函数传入的参数叫做实际传递参数
·栗子:
alert(add(3)); //false
function add(x,y){
alert(arguments instanceof Object); //true
alert(arguments instanceof Array); //false
alert(arguments.callee.length);//实参长度,为2;
alert(arguments.length);//形参长度,为1;
if(arguments.length != arguments.callee.length){ //true
alert(arguments[0]); //3
alert(arguments[1]); //undefined
return false;
}
alert(arguments[0]);
alert(arguments[1]);
return x+y;
};
2.caller:在函数内部使用,返回函数的反编译文本,若在函数外部使用,返回为null.
·栗子:
<script type="text/javascript">
window.onload = function(){
alert(add(3));
alert(add.caller); //null
};
function add(x,y){
alert(add.caller); //返回反编译函数
if(arguments.length != arguments.callee.length){
return false;
}
return x+y;
};
function plus(x,y){
return x-y;
};
</script>
返回的反编译函数如下:
function(){
alert(add(3));
alert(add.caller);
}
这里和toString()方法是有区别的:使用add.toString()方法返回如下,不论是在函数内调用还是在函数外调用:
function add(x,y){
alert(add.caller); //返回反编译函数
if(arguments.length != arguments.callee.length){
return false;
}
return x+y;
};