一段时间以来,我一直对回调函数感到困惑,我发现了一个简单的代码片段来说明我的困惑。来自w3schools:
var str = "Mr Blue has a blue house and a blue car";
var res = str.replace(/blue|house|car/gi, function (x) {
return x.toUpperCase();
});
这是我对回调的困惑的代表示例。我不明白如何填充参数x
中的function(x)
。我正在查看documentation at MDN,发现匹配项正在传递给x
,但我不理解其基本原理。是否存在诸如“回调函数的参数由上一个参数填充”之类的规则,还是此行为特定于String.replace()?我该如何推断并将其应用于找到的所有回调函数?
答案 0 :(得分:2)
调用replace
函数并传递两个参数。
replace
函数(由底层JS引擎提供,因此它的源代码不会出现在您的问题中)是 stuff 。
它所做的事情就是调用您作为第二个参数(newSubstr
)传递的函数。当replace
调用newSubstr
时,replace
传递newSubstr
一个参数。
是否存在诸如“回调函数的参数由前一个参数填充”之类的规则
不。通过调用回调的代码旨在执行的任何方式填充它。
此行为特定于String.replace()吗?
是
如何推断并应用于我发现的所有回调函数?
不能。
请改为阅读其手册或源代码。