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

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的一个属性

いいねを押す +0
黄舟

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

这样是会报错的

いいねを押す +0
迷茫

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!