84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
callee、caller 与 arguments有什么关系?
认证0级讲师
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返回调用者,如:
caller
var test = function(){ console.log(test.caller); }; var handler = function(){ test(); }; handler(); //caller is handler
这个时候,test.caller就是handler函数本身。
test.caller
handler
callee是被执行的function对象,他是arguments的一个属性如:
callee
function
arguments
var test = function(){ console.log(arguments.callee); }; test(); //callee is test
这里,arguments.callee就是test函数本身
arguments.callee
test
callee, caller不建议使用,因为这两个属性在严格模式(use strict)下都不存在。譬如:
use strict
var test = function(){ 'use strict'; console.log(test.caller); }; var handler = function(){ test(); }; handler(); //error occurred
这样是会报错的
caller 向上找他爹 callee 向上找他自己
向上找他爹
向上找他自己
不过还是强烈建议 “放弃吧” strict模式,都已经不建议用了!
strict
结果返回:
caller返回一个函数的引用,这个函数调用了当前的函数
结果返回:
callee返回正在执行的函数本身的引用,它是arguments的一个属性
caller
返回调用者,如:callee
是被执行的function
对象,他是arguments
的一个属性如:callee
,caller
不建议使用,因为这两个属性在严格模式(use strict
)下都不存在。譬如:caller
向上找他爹
callee
向上找他自己
不过还是强烈建议 “放弃吧”
strict
模式,都已经不建议用了!