Khi thiết lập cuộc gọi lại sự kiện bằng các tiêu chuẩn hiện đại, máy khách sẽ tự động chuyển tham chiếu tới đối tượng sự kiện vào từng chức năng gọi lại sự kiện. Nó sẽ luôn là đối số đầu tiên.
Bạn không cần phải làm gì để thực hiện điều đó. Tất cả những gì bạn cần làm là nắm bắt tham chiếu và bạn có thể làm điều đó với bất kỳ đối số được đặt tên nào bạn thích. Vì bạn là người nhận đối số, tên bạn chọn không phải khớp với bất kỳ thứ gì. Bạn có thể gọi nó là bất cứ điều gì (đó là một định danh hợp lệ).
Bây giờ, ví dụ của bạn chỉ hoạt động bởi vì trong phạm vi toàn cầu của một trang web đối tượng window
cho thấy một đối tượng duy nhất event
và đó là những gì a(event)
đang truy cập .:
<input onChange="a(event)"/>
<script>
function a(event) {
alert(event.target.value);
}
</script>
Nhưng, đây không phải là hiện đại cách mà các sự kiện sẽ được thiết lập. Thuộc tính sự kiện HTML nội dòng (onclick
, onchange
, v.v.) không được sử dụng (here's why).
Cách tiếp cận hiện đại như sau và lưu ý rằng việc đăng ký chức năng gọi lại sự kiện (a
) không biểu thị bất kỳ điều gì về sự kiện, nhưng chức năng thực tế có thể nhận thông tin cần thiết chỉ bằng cách mong đợi đối số.
document.querySelector("input").addEventListener("change", a);
function a(anyNameIsGoodHere) {
alert(anyNameIsGoodHere.target.value);
}
<div>Type anything into the text field and then hit TAB</div>
<input>
Nguồn
2017-09-12 14:10:54
Là người chỉ tinker với JavaScript không thường xuyên, tôi tiếp tục gặp sự cố này. Tôi nhìn nó lên, lần sau tôi không thể nhớ được. Gotta fav câu hỏi này để tôi có thể trở lại với nó trong thời gian tới nó sẽ xảy ra ... – domsson
Tên tham số là không thích hợp. –