[英]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.