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

callee、caller 与 arguments有什么关系?

PHP中文网
PHP中文网

认证0级讲师

全部回复(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模式,都已经不建议用了!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!