向函数传递一个变量,同时在函数参数中为其赋值?示例: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
我想了解当变量在函数的参数列表中被赋值时会发生什么。
例如: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