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

Why are the arguments of the following function being ignored?

本文关键字:函数 参数 为什么      更新时间:2023-09-26

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

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, '“')

findLastString功能中,工作正常。

可能是什么问题?

这是输入:

[ 'markdown',
  [ 'para', '"a paragraph"' ],
  [ 'hr' ],
  [ 'para', '''another paragraph''' ],
  [ 'bulletlist',
    [ 'listitem', '"a list item"' ],
    [ 'listitem', '"another list item"' ] ] ]

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

replaceString(tree[i])

应该是:

replaceString(tree[i], oldStr, newStr)