Javascript 当一个函数没有参数定义时,我怎么能调用一个带参数的函数呢?

Javascript 当一个函数没有参数定义时,我怎么能调用一个带参数的函数呢?,javascript,Javascript,你好 我偶然发现了一些我在JavaScript领域从未见过的东西,但我想对于更了解该语言的人来说,这很容易解释。下面我有以下函数:(代码取自《JavaScript忍者的秘密》一书) 正如你所看到的,函数是用一个空的参数列表定义的,但是当我在书的后面看到他们实际使用这样的函数时,我完全感到困惑 var x = 213; log(x); //Hmmm, I thought this function had an empty parameter list. 有人能给我解释一下,为什么这个函数调用是

你好

我偶然发现了一些我在JavaScript领域从未见过的东西,但我想对于更了解该语言的人来说,这很容易解释。下面我有以下函数:(代码取自《JavaScript忍者的秘密》一书)

正如你所看到的,函数是用一个空的参数列表定义的,但是当我在书的后面看到他们实际使用这样的函数时,我完全感到困惑

var x = 213;
log(x); //Hmmm, I thought this function had an empty parameter list.
有人能给我解释一下,为什么这个函数调用是允许的/可能的?JS中支持此功能的概念有哪些?提前谢谢,我很困惑


请注意,

您可以随意调用参数数目错误的函数。多余的参数将被忽略;缺少的参数将提供一个默认值

从代码示例中可以看到,您可以访问实际随“arguments”对象传递的参数


JavaScript的设计原则之一是宽容而不是严格。如果有办法继续,JavaScript就会继续。在JavaScript中,未能传递足够数量的参数并不像在C#这样的语言中那样被认为是致命的,在C#这样的语言中,设计原则之一是“通过在编译时失败引起开发人员的注意”.

Javascript函数有一个隐式的
参数
参数,它是一个具有长度属性的类似数组的对象

对于
log
方法,您可以这样做

function log(){

  alert(arguments[0]); 

  alert(arguments[1]);

}
你可以打电话给log

log("first","second");

JavaScript函数是,也就是说,它们可以接受任意数量的参数。您可以通过访问它们,并通过传入可变数量的值。正式参数列表只声明一些变量名,这些变量名是指向参数的指针,如果给定的参数少于定义的参数名,则默认为
未定义的

JavaScript允许您使用任意数量的参数调用函数,但如果您想要更严格的参数,则可以使用


它可以防止不正确的方法调用和许多其他JavaScript愚蠢行为。

参数
不是真正的数组,它是一个类似数组的对象,具有
长度
属性。参考:感谢您的讨论和代码示例,很高兴可以这样访问参数伪数组。谢谢你,先生!可能的重复或是,可能的非故意重复。但我从来没有想到我可以用这个标题来搜索类似的问题。我很抱歉。通常情况下,外部搜索引擎比SO的内部搜索结果要好得多——我通过谷歌和右边的“链接”列表找到了这些问题。确实很有趣。好事情我总是可以在这里问,当这种事情发生的时候,否则我会完全无助。顺便问一下,CoffeeScript是否也以同样的方式支持此功能?@JoseE:我从未使用过CoffeeScript,所以我不知道。
log("first","second");