- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题很难理解。
问题是关于 JavaScript 函数及其参数。
例如,当我们编写一个函数时,我们可以为其提供从一个到多个参数
function myCustomFunction(parameterOne, parameterTwo)
然后我们可以在调用函数时使用这些参数作为参数,例如
myFunction("hello", "World")
当我们调用该函数时,它会给我们值“hello”
和“World”
。
但是,我看到很多人做的一件事我不太理解,那就是,有些人在编写函数时会传递参数 (el
) 或(e
) 我知道它们代表元素或事件。例如,他们在函数中使用参数而不调用函数
el.className = "something"
e.className = "somethingElse";
当我们创建函数时,该参数的用途是什么?我能用它做什么?
P.S 请尽可能详细地解释。
谢谢。
最佳答案
您没有显示具体的示例,但听起来您正在谈论作为回调传递给另一个函数的函数。在这种情况下,您将声明一个将由其他代码调用的函数。您将该函数作为参数传递,然后,稍后,其他代码调用您的函数并向其传递所需的参数。
这是一个例子:
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);
});
What is the purpose of that parameter when we create a function and what can I really do with it?
传递回调函数时,您必须知道该 API 的“契约”是什么(通常通过一些文档)。该合约将描述调用回调函数时将传递哪些参数。对于上面的单击事件监听器,约定是传递给回调函数的第一个参数将是具有描述的属性的事件对象 here 。当您声明回调时,您可以使用与传递给回调的参数相匹配的参数来声明它。该特定 API 还将 this
指针设置为调度事件的对象(在上面的示例中,是被单击的 DOM 对象)。
在像 C++ 这样的强类型语言中,编译器会强制您在回调函数上声明完全正确的参数。在 Javascript 中,没有这样的强制措施,因此您可以为参数提供适当且有意义的名称,并将它们按正确的顺序排列,以使代码清晰并正常工作。请记住,回调函数的调用者(而不是您)决定回调函数将获取哪些参数。
关于JavaScript。如何在不调用函数的情况下使用单个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40320707/
我是一名优秀的程序员,十分优秀!