Javascript中callee与caller的用法和应用场景是什么?
callee、caller 与 arguments有什么关系?
javascript对象 javascript闭包 JavaScript
噼哩啪啦嘣
9 years, 4 months ago
Answers
caller
返回调用者,如:
var test = function(){
console.log(test.caller);
};
var handler = function(){
test();
};
handler(); //caller is handler
这个时候,
test.caller
就是handler
函数本身。
callee
是被执行的
function
对象,他是
arguments
的一个属性如:
var test = function(){
console.log(arguments.callee);
};
test(); //callee is test
这里,
arguments.callee
就是test
函数本身
callee
,
caller
不建议使用,因为这两个属性在严格模式(
use strict
)下都不存在。譬如:
var test = function(){
'use strict';
console.log(test.caller);
};
var handler = function(){
test();
};
handler(); //error occurred
这样是会报错的
传说D裤子
answered 9 years, 4 months ago
var a = function() {
alert(a.caller);
}
var b = function() {
a();
}
b();
结果返回:
var b = function() {
a();
}
caller返回一个函数的引用,这个函数调用了当前的函数
var a = function() {
alert(arguments.callee);
}
var b = function() {
a();
}
b();
结果返回:
var a = function() {
alert(arguments.callee);
}
callee返回正在执行的函数本身的引用,它是arguments的一个属性
ThomasL
answered 9 years, 4 months ago