Javascript 在函数参数中为函数赋值时,是否向函数传递变量?示例:myFunction(arr,newArr=[])

Javascript 在函数参数中为函数赋值时,是否向函数传递变量?示例:myFunction(arr,newArr=[]),javascript,arrays,recursion,default-parameters,Javascript,Arrays,Recursion,Default Parameters,我试图理解当一个变量在函数的参数列表中被赋值时会发生什么 例如:myFunction(arr,newArr=[]) 这是否意味着我正在函数声明中初始化newArr 如果我newArr.push(某物),然后用新的newArr再次调用myFunction,它会用[]的值重新初始化吗?还是只在第一次发生 这更多的是一个理论问题,但这里有一些示例代码: function capitalizeFirst(arr, newArr=[]) { if(arr.length === 0) { ret

我试图理解当一个变量在函数的参数列表中被赋值时会发生什么

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

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

如果我
newArr.push(某物)
,然后用新的
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);
};

默认参数仅在参数值为
未定义时使用
-

函数foo(a=[]) {如果(a.length>=5)返回 a、 推(a.长度) 返回foo(a) } console.log(JSON.stringify(foo())/`a`未定义 console.log(JSON.stringify(foo([9,9,9]))/`a`is[9,9,9] console.log(JSON.stringify(foo())/`a`未定义
console.log(foo()==foo())/`a`在调用之间不共享只有当参数的值
未定义时才会使用默认参数-

函数foo(a=[]) {如果(a.length>=5)返回 a、 推(a.长度) 返回foo(a) } console.log(JSON.stringify(foo())/`a`未定义 console.log(JSON.stringify(foo([9,9,9]))/`a`is[9,9,9] console.log(JSON.stringify(foo())/`a`未定义
console.log(foo()==foo())/`a`在调用之间不共享
如果未提供参数,这是默认值<代码>首先返回(arr.slice(1),newArr)不会在递归调用中初始化
newArr=[]
。如果未提供参数,这是默认值<代码>首先返回(arr.slice(1),newArr)不会在递归调用中初始化
newArr=[]