向函数传递一个变量,同时在函数参数中为其赋值?示例:myFunction(arr, newArr = [])

Pass a function a variable while assigning it a value in the function argument? Example: myFunction( arr, newArr = [] )

我想了解当变量在函数的参数列表中被赋值时会发生什么。

例如:myFunction(arr, newArr = [])

这是否意味着我正在函数声明中初始化 newArr?

如果我 newArr.push(something) 然后用新的 newArr 再次调用 myFunction 会怎么样,它会用 [] 的值重新初始化还是只在第一次发生?

这更像是一个理论问题,但这里有一些示例代码:

function capitalizeFirst(arr, newArr=[]) {
  if(arr.length === 0) {
    return newArr;
  }
  newArr.push(arr[0].charAt(0).toUpperCase() + arr[0].slice(1));
  return capitalizeFirst(arr.slice(1), newArr);
};

默认参数仅在参数值为undefined-

时使用

function foo(a = [])
{ if (a.length >= 5) return a
  a.push(a.length)
  return foo(a)
}

console.log(JSON.stringify(foo()))        // `a` is undefined
console.log(JSON.stringify(foo([9,9,9]))) // `a` is [9,9,9]
console.log(JSON.stringify(foo()))        // `a` is undefined
console.log(foo() === foo())              // `a` is not shared between calls

[0,1,2,3,4]
[9,9,9,3,4]
[0,1,2,3,4]
false