日期:2014-05-16 浏览次数:20362 次
首先让我们来理解这句话:每个函数其实是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);
????? }
? }
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|