caller和callee的使用方法
阿新 • • 發佈:2019-02-20
什麼是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有啥用:匿名函式的遞迴