function 下
function 就是函数,函数就是一段代码,这个没啥好说的,我们把函数起个名字,然后放起来,想用的时候再调用。JavaScript 中有很多内置的函数,比如 alert() document.write() 之类的函数。
函数的内部属性
在函数的内部 有两个特殊的对象, arguments 和 this
arguments 对象
arguments 对象是一个类数组的对象,它包括传入函数中的所有的对象,主要用途是保存函数的参数。这个对象含有一个 callee 属性,是一个指针属性,指向有 arguments 对象的函数。
我们来看一个阶乘递归 factorial 的小例子:
function factorial(num){
if(num <=1 ){
return 1;
}else {
return num * factorial(num-1);//阶乘,递归
}
}
document.write(factorial(5)+"<br/>");
document.write(factorial(6)+"<br/>");
在上述的代码中,如果我们修改了函数名 factorial 为 sum 那么就是要同时修改递归调用的函数名 num * factorial(num-1); 为num * sum(num-1); 如果有很多个递归调用函数的话逐一修改是不理智的行为,我们这时候需要用 arguments.callee 属性。对于阶乘函数一般会用到递归算法,函数内部一般会调用自身,这时候函数名不改变没问题,一旦函数名改变那么函数内部的函数名就是要逐一修改,处理起来很麻烦,这时候就需要我们之前提及的 arguments.callee 属性。我们把代码复制下来。看看 arguments.callee 怎么使用。
function factorial(num){
if(num <=1 ){
return 1;
}else {
return num * arguments.callee(num-1);//阶乘,递归
}
}
document.write(factorial(5)+"<br/>");
document.write(factorial(6)+"<br/>");
结果和上面的没啥区别, arguments.callee 就是实现了动态的调用自身。
This 感觉有点多,单独开一篇文章