更好地理解JavaScript参数

时间:2015-08-26 18:01:38

标签: javascript function

我不了解有关参数的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参数没有成为参数,但是它没有任何值,但此代码有效。这怎么可能是空的&#34;参数与方法一起使用。为什么这段代码有效?我是JavaScript的新手,所以任何简单的答案都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

狭缝,

正在调用的功能&#34;点击&#34;事件是回复&#34;功能。一旦活动&#34;点击&#34;然后提出匿名&#34;回电&#34;功能是&#34;功能(事件){&#34;正在使用1参数立即调用,即&#34; event&#34;。为了确定匿名函数调用的参数,请参考文档。 找到参数后,您可以在此函数中使用和使用它们,例如add&#34; event.preventDefault();警报(&#39;测试&#39;)&#34;当你点击元素时,什么都不会发生,只有弹出窗口会出现&#34; test&#34;会出现。

不要犹豫,不要问任何问题,这样我就可以改善答案。只是试着在高层解释。

答案 1 :(得分:0)

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

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

window.addEventListener("click", click);

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

如果您打开控制台,则会看到[MouseEvent]。特殊arguments对象返回函数接收的所有参数。 click函数只收到一个参数MouseEvent,因为窗口方法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
}