无论我在函数foo.caller.arguments中使用arguments还是使用简单的arguments,foo都有区别吗?
function foo(){
console.log(foo.caller.arguments);
}
function foo(){
console.log(arguments);
}发布于 2017-02-24 12:18:18
正如对这个问题的评论中所说的,caller不是一个标准属性:Objects/Function/caller
尽管如此,它还是返回对调用方的引用,即调用当前函数的函数。因此,caller.arguments将获得调用者调用的参数。
arguments为您获取调用当前函数时使用的参数。
例如:
function one(c) {
console.log('arguments', arguments);
console.log('caller.arguments', one.caller.arguments);
}
function two(a, b) {
one(3);
}
two(1, 2)打印
arguments [3]
caller.arguments [1, 2]发布于 2017-02-24 12:15:38
arguments将参数提供给函数本身,而caller.arguments则给出调用此函数的函数的参数。下面的代码将给您基本的理解。
function.caller是建议的BTW中的Non-standard。
var foo = function(name) {
bar('second');
}
var bar = function(surname) {
console.log(arguments);
console.log(bar.caller.arguments)
}
foo('first');https://stackoverflow.com/questions/42438216
复制相似问题