0
点赞
收藏
分享

微信扫一扫

arguments的类数组让递归函数解耦

荷一居茶生活 2022-02-13 阅读 79
javascript

arguments是一个类数组对象,包含调用函数时传入的所有参数。这个对象只有以 function 关键字
定义函数(相对于使用箭头语法创建函数)时才会有。虽然主要用于包含函数参数,但 arguments 对象其实还有一个 callee 属性,是一个指向 arguments 对象所在函数的指针。
callee属性的应用;来看下面这个经典的阶乘函数:

function factorial(num) {
	if (num <= 1) {
		return 1;
	} else { 
		return num * factorial(num - 1); 
	}
}

上面的阶乘函数,递归调用;但只要函数名factorial名称一改变,就会出错;这无疑让方法形成了紧密耦合;可使用 arguments.callee 就可以让函数逻辑与函数名解耦:

function factorial(num) {
	if (num <= 1) {
		return 1;
	} else {
		return num * arguments.callee(num - 1); // arguments.callee代替factorial
	}
}
举报

相关推荐

0 条评论