为什么忽略以下函数的参数?

时间:2015-03-09 16:10:48

标签: javascript regex

我创建了一个函数来递归替换嵌套数组中的字符串:

function replaceString(tree, oldStr, newStr) {
  for (var i = 0; i < tree.length; i++) {
    if (Array.isArray(tree[i])) {
      replaceString(tree[i])
    } else {
      tree[i] = tree[i].replace(oldStr, newStr)
    }
  }
}

function replaceQuotes(tree, callback) {
  var oldStr = /"(?=\b)/g
  var newStr = '“'

  replaceString(tree, oldStr, newStr)

  callback(null, tree) 
}

但由于某种原因,这些论点没有得到承认,这很奇怪,因为如果我这样做:

tree[i] = tree[i].replace(regex, str).replace(/"(?=\b)/g, '“')

<{1>}功能中的

完全正常。

可能是什么问题?

这是输入:

findLastString

1 个答案:

答案 0 :(得分:5)

在递归调用中,您没有传递2个参数:

replaceString(tree[i])

应该是:

replaceString(tree[i], oldStr, newStr)