1. 程式人生 > >caller和callee的使用方法

caller和callee的使用方法

什麼是caller:

先看官方定義的概念:Function物件的caller屬性是對呼叫當前函式的函式的引用。如果該函式是從JavaScript程式的頂層呼叫的,caller的值就為null

看個例子:

function callerDemo() {
	if (callerDemo.caller == null) {
		return "在頂層執行";
	}
	else
	{
		return "被函式使用";
	}
}
function handleCaller(){
	alert(callerDemo());
}

caller有啥用:判斷是否在頂層使用,也可以像抽象類一樣,要求該函式必須在函式內執行

什麼是callee;

概念:屬性arguments.callee引用當前正在執行的函式。它給未命名的函式提供了一種自我引用的方式。該屬性只在函式體內被定義。

看個例子:

var factorial = function(x) {
	if (x < 2) return 1;
	else return x * arguments.callee(x-1);
}
var y = factorial(5);// 返回 120 5*4*3*2*1=120

callee有啥用:匿名函式的遞迴