您的位置:首页 > Web前端 > JavaScript

JS函数表达式

2016-03-24 09:38 603 查看
1.递归:

function digui(num) {
if (num <= 1) {
return 1;
} else {
return num*digui(num-1); // 报错
}
}
var d = digui;
digui = null;
d(3);


改进:用arguments.callee(num-1) 代替 digui(num-1) arguments.callee()是指向参数所在的函数的指针,code如下:

function digui(num) {
if (num <= 1) {
return 1;
} else {
return num*arguments.callee(num-1);
}
}
var d = digui;
digui = null;
d(3)


但是,arguments.callee在严格模式下会报错,故用命名函数表达式来代替:

var digui = (function f(num) {
"use strict";
if (num <= 1) {
return 1;
} else {
return num * f(num-1);
}
});


命名函数表达式是最完美的解决方案
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: