调用带空括号或根本不带括号的函数对于没有参数的函数来说可能看起来无关紧要。然而,仔细检查就会发现一个微妙的区别。
考虑以下两个示例:
window.onload = initAll();
window.onload = initAll;
1 。立即调用:
在第一个示例中,空括号立即调用 initAll() 函数,并将返回值分配给 window.onload。通常,这不是所需的行为,因为 initAll 应在 onload 事件发生时执行。
2.参考赋值:
在第二个示例中,initAll 函数本身被赋值给 window.onload。这意味着该函数在加载事件被触发之前不会执行。这种方法可确保正确设置事件处理程序。
在 JavaScript 中,函数是第一类对象。这意味着它们可以存储在变量中,作为参数传递,并作为属性分配。这就是以下语法有效的原因:
window.onload = () => initAll();
在这种情况下,将创建一个匿名函数,该函数在调用时会立即调用 initAll()。然而,这个外部函数的引用仍然分配给window.onload,因此事件处理程序将等待load事件来触发这两个函数的执行。
以上是JavaScript 函数调用:空括号——立即调用还是引用赋值?的详细内容。更多信息请关注PHP中文网其他相关文章!