在JavaScript中,参数可以通过引用传递给函数吗?

Can arguments be passed just by reference to function in JavaScript

本文关键字:函数 引用 JavaScript 参数 可以通过      更新时间:2023-09-26

看这个:

addEventListener("mouseover", function(e){..code..},false);

可以写成

function mouseover(e){ ... }
addEventListener('mouseover', mouseover, false);

所以这里mouseover函数接收事件对象,即使它只是被引用而没有传递任何参数。我想也许addeventlistener函数执行所有引用/匿名函数,像这样:

....
suppose like this
function addeventlistner (a,b,c){
b(e);
}

我为什么要问这个?

我不明白addeventlistner函数function (e) {...code...}e从何而来

据我所知,addeventlistner的第二个参数可以是目标对象或函数。它被传递一个事件对象。函数可以对传递给它的对象做一些事情,这是有道理的,对象会对传递给它的事件对象做什么呢?

这样做的原因是,我试图在一些示例代码中理解函数从addeventlistner中获取e,类似于上面的一个,并使用e.msg, e.data和e.cmd.....等属性我不知道它们是从哪里来的。

它们是事件对象的属性吗?我找不到他们!

当你添加一个事件监听器时,你添加的函数会根据事件的类型(点击,滚动等)传递一个事件对象。

http://www.w3schools.com/jsref/dom_obj_event.asp

window.addEventListener("click", function(event) {
    alert(event.pageX + ", " + event.pageY);
}, false);
// same as
window.addEventListener("click", function(e) {
    alert(e.pageX + ", " + e.pageY);
}, false);

参数名可以是任何仍然代表事件对象的名称。

EDIT列出事件对象的所有属性和函数

window.addEventListener("click", function(event) {
    var all = "";
    for(var prop in event) {
        all += prop + " : " + event[prop] + "'n";
    }
    alert(all);
}, false);