为什么括号和逗号如此奇怪地放在"函数名称([param [,param [,... param]]])"中?

use*_*404 3 javascript

我一直都看到这个,但我从未理解过.为什么这么多函数在函数定义中有这些嵌套括号和奇怪的逗号?

就像是

function name(param, param param) 
Run Code Online (Sandbox Code Playgroud)

对我有意义,或者

function name([param, [param, [param, [param]]]]) 
Run Code Online (Sandbox Code Playgroud)

会有意义,但是左括号到逗号左边的原因是什么?

Los*_*ses 8

这意味着参数是可选的.例如,在

function foo(par1[, par2]) {}
Run Code Online (Sandbox Code Playgroud)

par1参数是强制性的,但是par2是可选的.如果您使用par2,则需要逗号,这就是为什么它包含在大括号中.