[英]What is the meaning of 'function(event)' in js
我不知道“函数(事件)”这句话的意思
Event.add(apple,'click',function(event) {
Event.stopPropagation(event);
});
参数'event'不是javascript的唯一关键字吗?
关键字可以是某个函数的参数吗?
我理解以下代码的含义:
function(test) {
alert(test);
}
但我不明白这一点:
功能(事件)...
任何人都可以向我解释一下吗?
事件对象总是传递给处理程序并包含许多有用的信息。
不同类型的事件提供不同的属性。 例如,onclick 事件对象包含:
event.target
- 对被点击元素的引用。 IE 使用 event.srcElement 代替。event.clientX
/event.clientY
- 单击时指针的坐标。有关单击了哪个按钮和其他属性的信息。 请访问此链接。
它非常简单地回答了您的所有问题
就像在 HTML 中您分配了这样的事件
<button onclick="alert(event)">See the event</button>
然后
function alert(event) {
// event.type contains whether this event was invoked in the result of a click etc
// event.target would contain the reference to the element which invoked this method/event
}
它是一个匿名函数,即一个没有名字的函数,它发送事件对象。 该对象包含有关事件本身的信息。 它总是作为第一个对象/变量传递。
它定义了一个匿名函数对象。 这段代码:
function foo(bar) { ... }
在功能上类似于:
var foo = function (bar) { ... };
(除了在第一种情况下,名称foo
以及函数对象的创建和赋值被提升到作用域的顶部,而在第二种情况下,只有名称foo
被提升;直到赋值时foo
才会持有该函数执行。)
实际上,您发布的代码正在调用Event.add()
并将一个函数作为第三个参数传递给它,而不是提前声明该函数,而是创建了内联函数对象。
在您的问题中编写代码块的另一种方法是:
function handler(event) {
Event.stopPropagation(event);
}
Event.add(apple, 'click', handler);
除了您问题中的代码没有引入handler
名称。
请注意,没有这样的方法Event.stopPropagation()
。 然而, event
对象会有一个stopPropagation()
,所以大写的 E 可能是一个错字。 很可能意图是使用function (event) { event.stopPropagation(); }
function (event) { event.stopPropagation(); }
.
event
只是传递给事件侦听器函数的变量,例如Event.add
、 element.on
。 它不是保留的(尽管Event
是,这就是您可以使用Event.add
),并且您可以随意命名它。
event
参数用于传递有关已发生事件的信息(在本例中为点击apple
),可用于检索有关该事件的数据或对其进行操作。
function(){...}
是一个匿名函数,这意味着你不需要命名它,你可以直接声明它内联,并且该函数将作为参数传递,就像你说的
function foo (event) {
...
}
Event.add(apple, "click", foo);
但你不需要事先声明它。 它确实具有不可复制的缺点,例如在清除事件处理程序时。
看看事件变量你就明白了:)
function (event) {
console.log({ event });
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.