84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
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
模式,都已经不建议用了!