gpt4 book ai didi

Javascript/jQuery 函数参数

转载 作者:行者123 更新时间:2023-11-29 16:15:45 27 4
gpt4 key购买 nike

新手 jQuery/Javascript 问题在这里

我看到以下列方式编写的函数:

some_function = function(event) {

}

我的问题是:event 参数是什么意思?它是可选的吗?如果我想要两个额外的参数 X 和 Y,签名会是什么样子呢?当我现在调用该函数时,我可以像 some_function(); 那样调用它并且它工作正常(这让我相信它是可选的)。但是,当我有两个附加参数(如 X 和 Y)时,情况会发生什么变化?我可以像 some_function(myX, myY) 那样调用它吗?

谢谢!

最佳答案

在 JavaScript 中有两种方法可以实例化一个函数。它们看起来一样,但它们的含义并不完全相同。

您发布的是作为语言中表达式 一部分的函数实例化。在那种形式下,语法是

function name ( p1, p2, ... ) { body }

“名称”和参数是可选的;关键字 function 和括号是必需的。 (在这种情况下,在某些浏览器中使用名称会出现一些不明显的问题;问题会越来越小。)

这样做的效果是创建一个新的函数对象。对对象的引用就像任何其他值一样参与表达式(好吧,就像对对象的任何其他引用一样)。因为它是一个函数,所以引用也可用于调用该函数并使其代码(“主体”)执行,就像您期望的那样。 (如果你做不到,它就没有太大的功能了!)

另一种可以实例化函数的方法是使用函数声明语句,令人惊讶的是,它看起来完全一样(除了需要“名称”)。区别在于关键字 function 出现在代码中的确切位置:

  • 如果关键字 function 是新语句中的第一件事,那么您就有了一个函数声明,并且“名称”是必需的。在这种情况下,该语句不是一个表达式语句,该语句所做的唯一事情就是实例化函数并将对函数的引用或多或少地绑定(bind)到“name”好像“名称”是局部变量(如果在全局范围内,则为全局变量)。

  • 如果关键字 function 出现在表达式中的任何其他位置(表达式语句,或隐藏在其他上下文中的表达式,例如 forwhile 循环语句),则为函数实例化表达式。

现在,无论函数是如何“诞生”的,一旦您获得了对该函数的引用,您就可以调用它并传递任意数量的参数。


我个人并不知道这种趋势是如何开始的,或者它是否应该被视为一种趋势,但是看到用这样的代码(以及您发布的内容)实例化的本地函数是相当普遍的:

var some_function = function( arg1, arg2 ) {
/* some code */
};

这是表达式中函数实例化的示例。最终效果是符号“some_function”绑定(bind)到新创建的函数。然而,在名称从(几乎)等效函数声明绑定(bind)到函数的方式之间存在细微的挑剔差异:

function some_function( arg1, arg2 ) {
/* some code */
};

第二种方法(函数声明语句)稍微好一点的一个简单原因是函数的名称将显示在堆栈跟踪中。当然,可以通过看起来多余的方式实现这一点:

var some_function = function some_function( arg1, arg2 ) {
/* some function */
};

我真的不知道你为什么要这样做,但它会起作用,除了在 some naughty environments 中.

关于Javascript/jQuery 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16426899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com