使用 functionName() 和仅使用 functionName 分配变量值有什么区别?
What is the difference between assigning a variable value with functionName() and just functionName?
const heightOutput = document.querySelector('#height');
const widthOutput = document.querySelector('#width');
function reportWindowSize() {
heightOutput.textContent = window.innerHeight;
widthOutput.textContent = window.innerWidth;
}
window.onresize = reportWindowSize;
为什么不
window.onresize = reportWindowSize()
?
这是函数调用,我想触发它。但是当我添加 () 时它不起作用。
当你有语句 reportWindowSize()
时,它的作用是调用函数 reportWindowSize
。调用后,它 returns 一些值,在本例中为 undefined
。因此,window.onresize
将被分配值 undefined
。
现在,让我们谈谈window.onresize
。它是一个被触发的事件处理程序
当某些事件发生时,在这种情况下,当 window 大小更改时。有关事件的更多信息:Events API.
这意味着,当 window 调整大小时,某些本机代码将调用处理程序 window.onresize
,就像这样 window.onresize()
。如果它是 undefined
那么它将不起作用。它必须是一个函数,所以我们要么将函数的引用传递给它,这正是您正在做的,要么传递函数值。传递引用不会调用该函数,而是将其指向您传递的函数。最后,当事件被触发时,函数 reportWindowSize
被调用。
一些可能有用的资源:
const heightOutput = document.querySelector('#height');
const widthOutput = document.querySelector('#width');
function reportWindowSize() {
heightOutput.textContent = window.innerHeight;
widthOutput.textContent = window.innerWidth;
}
window.onresize = reportWindowSize;
为什么不
window.onresize = reportWindowSize()
?
这是函数调用,我想触发它。但是当我添加 () 时它不起作用。
当你有语句 reportWindowSize()
时,它的作用是调用函数 reportWindowSize
。调用后,它 returns 一些值,在本例中为 undefined
。因此,window.onresize
将被分配值 undefined
。
现在,让我们谈谈window.onresize
。它是一个被触发的事件处理程序
当某些事件发生时,在这种情况下,当 window 大小更改时。有关事件的更多信息:Events API.
这意味着,当 window 调整大小时,某些本机代码将调用处理程序 window.onresize
,就像这样 window.onresize()
。如果它是 undefined
那么它将不起作用。它必须是一个函数,所以我们要么将函数的引用传递给它,这正是您正在做的,要么传递函数值。传递引用不会调用该函数,而是将其指向您传递的函数。最后,当事件被触发时,函数 reportWindowSize
被调用。
一些可能有用的资源: