我不知道为什么下面的代码不起作用!但是,如果我将var eva = function(){alert("hello");}更改为function eva() {alert("hello");},它将起作用。

var myForm = document.forms["form1"];

myForm.addEventListener("submit", eva);

var eva = function() {
alert("hello");
}

最佳答案

通过eva添加addEventListener函数时,这是一个未定义的变量。然后,将其设置为功能。本质上,当您像这样写时:

var myForm = document.forms["form1"];

myForm.addEventListener("submit", eva);

var eva = function() {
alert("hello");
}


您正在有效地编写以下代码:

var myForm = document.forms["form1"];
var eva; // = undefined

myForm.addEventListener("submit", eva);

eva = function() {
    alert("hello");
}


var的声明获取hoisted,而不是赋值。通过使用函数声明,function eva() { ... }类似于hoisted到达作用域的顶部,并且在将其传递给addEventListener时是有效的函数。

因此,您有两个选择:


将var声明和赋值移动到addEventListener的调用上方。
使用函数声明。

关于javascript - 为什么var eva = function(){}对addEventListener()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20426008/

10-09 02:02