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。调用后,它返回一些值,在这种情况下为undefined。因此,window.onresize将被分配值undefined
现在,让我们谈谈window.onresize。这是一个触发的事件处理程序
当某些事件发生时,在这种情况下,更改窗口大小时。有关事件的更多信息:Events API
这意味着,当调整窗口大小时,某些 native 代码将像window.onresize这样调用处理程序window.onresize()。如果它是undefined,那么它将无法正常工作。它必须是一个函数,因此我们要么传递函数的引用(正是您正在执行的操作),要么传递函数值。传递引用不会调用该函数,而是将其指向您正在传递的函数。最后,当事件被触发时,函数reportWindowSize被调用。
一些资源可能会有所帮助:

  • Functions in javascript
  • First-class Function
  • 09-11 17:41