我在函数foo.caller.arguments
中使用arguments
还是简单foo
是否有区别:
function foo(){
console.log(foo.caller.arguments);
}
function foo(){
console.log(arguments);
}
答案 0 :(得分:2)
arguments
给出了函数本身的参数,而caller.arguments
给出了调用这个函数的函数的参数。以下代码将为您提供基本的了解。
function.caller
为Non-standard
var foo = function(name) {
bar('second');
}
var bar = function(surname) {
console.log(arguments);
console.log(bar.caller.arguments)
}
foo('first');
答案 1 :(得分:2)
正如在问题的评论中所说,caller
不是标准财产:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_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]