【发布时间】:2015-11-24 05:51:30
【问题描述】:
我有以下功能:
function foo(f, k) {
if (f.length > 2) {
// how do I access the third element of f?
// it can be a function retry() or undefined.
// var retry = f.arguments[2]; ??
// retry();
// console.log(f.arguments) returns undefined
} else {
k();
}
}
var retry = function() { console.log("hi"); };
foo(function(x, y) { console.log(x+y); },
function() { console.log("hello"); });
foo(function(x, y, retry) { console.log("retry present"); },
function() { console.log("hello"); });
如果第三个参数传入,我需要调用它。我可能将2 或3 参数传递给f。如果存在第三个参数,我如何访问它?
【问题讨论】:
-
参数不是可以访问的。它是第 n 个参数的名称声明。您可以通过在函数中使用该名称来访问该参数。
-
@philippe:不,
retry不是函数。这只是一个变量名。在外部范围内还有一个函数retry,但它与您作为f传递给foo的匿名函数的retry参数无关。 -
"我可能有 2 或 3 个参数被传递给
f" - 不完全是。在您当前的代码中,您还没有将任何参数传递给f。有一个函数f可以为其命名参数接受2 或3 个参数。拥有该函数f,您可以确定命名参数的数量 (f.length),但除此之外没有其他内容 - 没有可访问的值,因为还没有人调用该函数。 -
@philippe:那你想访问什么?是否要获取第三个参数名称的字符串
"retry"? -
@philippe:您可能想重新阅读我的解释。没有“第三个元素”是可以调用的函数。你的要求毫无意义。
标签: javascript function callback