该JavaScript回调函数的参数在哪里定义?

时间:2018-09-25 12:54:04

标签: javascript callback

一段时间以来,我一直对回调函数感到困惑,我发现了一个简单的代码片段来说明我的困惑。来自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()?我该如何推断并将其应用于找到的所有回调函数?

1 个答案:

答案 0 :(得分:2)

调用replace函数并传递两个参数。

replace函数(由底层JS引擎提供,因此它的源代码不会出现在您的问题中)是 stuff

它所做的事情就是调用您作为第二个参数(newSubstr)传递的函数。当replace调用newSubstr时,replace传递newSubstr一个参数。

  

是否存在诸如“回调函数的参数由前一个参数填充”之类的规则

不。通过调用回调的代码旨在执行的任何方式填充它。

  

此行为特定于String.replace()吗?

  

如何推断并应用于我发现的所有回调函数?

不能。

请改为阅读其手册或源代码。