Javascript变量参考

时间:2014-12-18 19:01:25

标签: javascript scope

我不明白的东西,我确信有任何简单的Javascript知识的人都会得到; ' m'这个替换函数中引用的变量实际上是指来自str的输入 - 我不明白它是如何将str作为m?

str = str.replace("whatevers",function(m){ return m.toUpperCase(); })

非常感谢提前。泰勒。

2 个答案:

答案 0 :(得分:4)

每个函数定义如何使用传入的函数。 documentation for String.prototype.replace()解释了specifying a function as a parameter部分中如何使用它。

replace的实现中的某个地方,您传入的函数会被多个参数调用。完整的例子是:

function replacer(match, p1, p2, p3, offset, string) {
  return "replacement_text";
}

答案 1 :(得分:1)

在字符串替换的上下文中,如果你传递一个函数作为第二个参数就像你正在做的那样,你传入的那个函数的第一个参数(在你的情况下是'm')将是任何匹配您的初始第一个参数(在本例中为“whatevers”)。一旦找到匹配,就会分配给'm',然后它将对该变量'm'执行toUpperCase函数。