1 函数的arguments
arguments是js内置的关键字,类似Array,但并不是Array。
arguments有length属性,可以通过下标来访问。
arguments的个数跟实参的个数保持一致,跟形参没有关系。
arguments的内容可以在函数体内修改
<span style="font-family:Microsoft YaHei;font-size:24px;">Array.prototype.testStr="Test";
function MyTest(a,b){
alert(MyTest.arguments.length);
alert(arguments[MyTest.arguments.length - 1] * 3);
}
MyTest(10);
MyTest(10,20);</span>
<span style="font-family:Microsoft YaHei;font-size:24px;">//由于没有返回值类型,同时形参个数不定,故javaScript不存在函数的重载</span>
输出结果是: 1, 30, 2, 60
2 arguments[index].callee()
callee指代的是所属的函数本身,同时只是arugments的属性
Array.prototype.str = "student";
function Sum(data){
if (data == 1)
{
return 1;
}
else
{
//argumetns的属性callee
return data + arguments.callee(data - 1);
}
}
function DoDel(){
document.write(arguments.str + "<br/>");
}
var ret = Sum(10);
document.write(ret + "<br/>");
var arrData = [];
document.write(arrData.str + "<br/>"); //输出的结果是student
DoDel(); //输出undefined,可见arguments并不是一个纯粹的arguments
3 JavaScript的函数声明和函数表达式
1)函数的表达式不一定需要函数名称,匿名函数用来定义 2)函数声明一定有名称