繁体   English   中英

更好地理解JavaScript参数

[英]Better understanding JavaScript parameters

我不了解有关参数的JavaScript代码的某些部分。 我在W3schools上找到了这个例子:

<!DOCTYPE html>
<html>
<body>

<a id="myAnchor" href="http://w3schools.com/">Go to W3Schools.com</a>

<p>The preventDefault() method will prevent the link above from following the URL.</p>

<script>
document.getElementById("myAnchor").addEventListener("click", function(event){
    event.preventDefault()
});
</script>

</body>
</html>

我对函数内部的event参数感到困惑。 虽然event参数没有成为参数,但是它没有任何值,但此代码仍然有效。 如何将这个“空”参数与方法一起使用。 为什么这段代码有效? 我是JavaScript的新手,所以任何简单的答案都会受到赞赏。

狭缝,

在“click”事件上调用的函数是“回调”函数。 一旦事件“点击”引发,则立即使用1个参数“event”调用“函数(事件){”的匿名“回调”函数。 为了确定匿名函数调用的参数,请参考文档。 找到参数后,您可以在此函数中使用和使用它们,例如添加“event.preventDefault(); alert('test')”,单击元素时不会发生任何事情,只有弹出窗口“test” “会出现。

不要犹豫,提出任何问题,以便我可以改进我的答案。只是试着在高层次上解释。

此功能也称为回调。 回调是指将一个函数作为参数传递给另一个函数。

尝试测试此代码,然后单击页面上的任意位置:

window.addEventListener("click", click);

function click() {
    console.log(arguments);
}

如果您打开控制台,您应该看到[MouseEvent] 特殊arguments对象返回函数接收的所有参数。 click函数只接收一个参数MouseEvent因为window方法addEventListener将事件发送到事件处理程序。

这是一个类似的例子:

init("abc", logArgs); //--> "abc"
init("abc", logDog); //--> "dog"

function logArgs(x) {
    console.log(x);
}

function logDog(x) {
    console.log("dog");
}

function init(x, callback) {
    callback(x);
}

关于您的示例的令人困惑的部分是您可以向函数发送匿名函数。 匿名函数是未命名的函数。 使用上面的示例,您可以这样做:

init("abc", function(y) { //the y parameter comes from the init function
    console.log(y); //"abc"
});

function init(x, callback) {
    callback(x); //send the first argument to the anonymous function
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM