javascript闭包 - Javascript中callee与caller的用法和应用场景是什么?
PHP中文网
PHP中文网 2017-04-10 15:45:53
0
3
420

callee、caller 与 arguments有什么关系?

PHP中文网
PHP中文网

认证0级讲师

reply all(3)
小葫芦
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的一个属性

黄舟

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

这样是会报错的

迷茫

caller 向上找他爹
callee 向上找他自己

不过还是强烈建议 “放弃吧” strict模式,都已经不建议用了!

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!