我有一个问题,我觉得很难理解。
问题是关于JavaScript函数及其参数。
当我们编写一个函数时,我们可以从一个参数给出它,例如
function myCustomFunction(parameterOne, parameterTwo)
然后我们可以在调用函数时使用这些参数作为参数,例如
myFunction("hello", "World")
当我们调用该函数时,它将为我们提供值"hello"
和"World"
。
然而,有一件事我看到很多人制作我并不真正理解,也就是说,有些人在编写函数时会传递参数(el
)或({{ 1}})我知道它们代表元素或事件。他们正在使用函数中的参数而不调用函数,例如
e
当我们创建一个函数时,该参数的目的是什么?我能用它做些什么?
P.S请尽可能详细解释。
感谢。
答案 0 :(得分:3)
你没有显示一个具体的例子,但听起来你正在谈论一个作为回调传递给另一个函数的函数。在这种情况下,您将声明一个将被其他代码调用的函数。您将该函数作为参数传递,然后,稍后,其他代码调用您的函数并将其传递给所需的参数。
以下是一个例子:
document.getElementById("test").addEventListener("click", function(e) {
// this function is called by the browser when the click event occurs
// the argument `e` is an event object passed by the browser
console.log(e.target);
});
创建函数时该参数的用途是什么? 我能用它真正做些什么?
传递回调函数时,你必须知道"合同"适用于此API(通常通过一些文档)。该合约将描述在调用时将哪些参数传递给回调函数。对于上面的click事件侦听器,合同是传递给回调函数的第一个参数将是一个具有描述here属性的事件对象。当您声明回调时,然后使用与传递给回调的参数匹配的参数声明它。该特定API还将this
指针设置为调度事件的对象(在上面的示例中,是单击的DOM对象)。
在像C ++这样的强类型语言中,编译器会强制您在回调函数上声明了正确的参数。在Javascript中,没有这样的强制执行,因此您可以为参数提供适当且有意义的名称,并将它们按正确的顺序排列,以使代码清晰并正常工作。请记住,回调函数的调用者(不是你)决定回调函数将获得什么参数。
答案 1 :(得分:3)
并非所有功能都由您手动调用。您还可以创建将传递给某些API的函数,这些函数将为您调用它。
例如,事件监听器:
element.addEventListener('click', function listener(e) {
// Here you can access the event object in `e`
});
您没有调用listener
功能。您只需创建它并告诉浏览器在用户单击时调用它。它将以事件对象作为参数调用,因此如果要使用它,则添加参数。