为什么在 JavaScript 中可以向函数传递额外的参数?

Ash*_*jan 6 javascript function

假设我定义了一个函数:

function myAwesomeFunction(x){
    console.log(x);
}
Run Code Online (Sandbox Code Playgroud)

现在,我期望的是,如果我这样称呼它:myAwesomeFunction(1)or myAwesomeFunction('lol')or myAwesomeFunction('whatever'),它会起作用并且确实如此。

但它是如何工作的,即使我向函数传递额外的参数并简单地忽略除第一个参数之外的所有参数:

myAwesomeFunction('why so', 'serious?')
Run Code Online (Sandbox Code Playgroud)

我们在上面的函数中甚至没有任何可选参数?(即,像(x, y='')

function myAwesomeFunction(x){
    console.log(x);
}
Run Code Online (Sandbox Code Playgroud)

kem*_*toe 6

您可以使用任意数量的参数调用 Javascript 函数,而不管函数的定义如何。

任何未传递的命名参数都将是未定义的。

Javascript 将您的参数视为数组。更具体地说,它是arguments数组,函数声明中的命名参数只是指向arguments. 更多信息请点击此处