Javascript 事件侦听器将调用函数,但不会调用分配给函数的变量

Javascript 事件侦听器将调用函数,但不会调用分配给函数的变量,javascript,Javascript,问题-在调整浏览器大小时调用函数 不正确的解决方案: 正确的解决方案: 问题-为什么第一个示例不起作用?第一个示例按此顺序执行 var resize; // undefined window.addEventListener("resize", resize); resize = function() { console.log("message"); }; function resize() { console.log("message"); } window.addEv

问题-在调整浏览器大小时调用函数

不正确的解决方案:

正确的解决方案:


问题-为什么第一个示例不起作用?

第一个示例按此顺序执行

var resize; // undefined
window.addEventListener("resize", resize);

resize = function() {
    console.log("message");
};
function resize() {
    console.log("message");
}

window.addEventListener("resize", resize);
resize
的值在设置eventlistener时,
undefined

变量变为,这意味着变量已声明,但没有赋值

第二个是按照这个顺序执行的

var resize; // undefined
window.addEventListener("resize", resize);

resize = function() {
    console.log("message");
};
function resize() {
    console.log("message");
}

window.addEventListener("resize", resize);

因为函数声明也被挂起。

第一个是按此顺序执行的

var resize; // undefined
window.addEventListener("resize", resize);

resize = function() {
    console.log("message");
};
function resize() {
    console.log("message");
}

window.addEventListener("resize", resize);
resize
的值在设置eventlistener时,
undefined

变量变为,这意味着变量已声明,但没有赋值

第二个是按照这个顺序执行的

var resize; // undefined
window.addEventListener("resize", resize);

resize = function() {
    console.log("message");
};
function resize() {
    console.log("message");
}

window.addEventListener("resize", resize);

因为函数声明也被挂起。

函数声明被挂起

作业未挂起

因为
window.addEventListener(“resize”,resize)出现在
=function…
之前,
resize
的值仍然是
未定义的

这将有助于:

var resize = function() {
    console.log("message");
};

window.addEventListener("resize", resize);

功能声明已悬挂

作业未挂起

因为
window.addEventListener(“resize”,resize)出现在
=function…
之前,
resize
的值仍然是
未定义的

这将有助于:

var resize = function() {
    console.log("message");
};

window.addEventListener("resize", resize);

因为在第二个示例中,
功能提升
正在进行。这样的函数声明会提升函数的名称及其定义

function someFunction(){
  //Some Code
}
通过这样做,JavaScript解释器允许您在源代码中声明函数之前使用该函数

因此,即使您的函数定义在后面,您仍然可以使用它,因为它被提升

但是,函数定义提升只发生在函数声明中,而不是函数表达式中。例如:

var definitionNotHoisted = function () {
    console.log("Definition not hoisted!");
};
此函数只能在定义后使用。 这就是为什么在第一个示例中,函数不起作用


您可以在这里了解更多。

因为在第二个示例中,
函数正在执行。这样的函数声明会提升函数的名称及其定义

function someFunction(){
  //Some Code
}
通过这样做,JavaScript解释器允许您在源代码中声明函数之前使用该函数

因此,即使您的函数定义在后面,您仍然可以使用它,因为它被提升

但是,函数定义提升只发生在函数声明中,而不是函数表达式中。例如:

var definitionNotHoisted = function () {
    console.log("Definition not hoisted!");
};
此函数只能在定义后使用。 这就是为什么在第一个示例中,函数不起作用


您可以在此了解更多信息。

在使用前初始化变量
调整大小
,这也会起作用…在使用前初始化变量
调整大小
,这也会起作用。。。