日期:2014-05-16  浏览次数:20334 次

javascript应该注意的小case--函数

每个函数都是function类型的实例

首先让我们来理解这句话:每个函数其实是function类型的实例。也就是说我们声明的函数都是对象,有自己的属性和方法,函数名不过是指向该对象的一个指针

看下面这个例子:

?
1
2
3
4
5
6
7
8
9
function myfuc(arg) {
??????alert(arg);
??}
?
??var anfuc = myfuc;
?
??myfuc = null;
?
??anfuc(1);? //? 报错,还是弹出1??

?

结果是弹出1,myfuc不过是指向我们函数对象的一个指针,它指向null之后,并不影响anfuc的,因此调用无影响。

?

函数的内部属性

arguments和this:arguments是一个类数组对象,它包含调用函数时传入的所有参数,你在函数里可以用arguments[0]、arguments[1]…来访问传入参数;此外,它还有一个属性callee,它也也是一个指针,指向拥有这个arguments对象的函数,这个属性在我们递归中相当有用,比直接的函数名易维护且健壮。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function myfuc(arg) {
?????if (arg <= 1) {
?????????return 1;
?????} else {
?????????return arg + myfuc(arg - 1);
?????}
?}