为什么我的 addEvent 函数需要自调用?

Why does my addEvent function need to be self-invoking?

我正在自学使用 javascript 进行编码,真正让我兴奋的事情之一是能够创建自定义(较短)版本的 addEventListener。

我有以下代码:

var onEvent = function() {
 return function(obj, event, fn) {
   obj.addEventListener(event, fn, false);
 }; 
}();

onEvent(input,"keypress", pressedEnter);

(对于我自己的个人使用,我更喜欢使用 "When" 而不是 "onEvent"。

经过研究我想我明白了在函数末尾添加 () 运行 就可以了。但为什么这是必要的?函数 运行 添加到将被单击的对象后不会立即生效吗?

同样,我创建了一个较短的 getElementById:

function grab(id) { 
 return document.getElementById(id); 
}

为什么在使用前不需要 运行 本身?我是否误解了结尾括号的用途?

谢谢。

var onEvent = function(obj, event, fn) {
  obj.addEventListener(event, fn, false);
};

应该完全一样。

您的外部匿名(没有名称)函数用于定义和 return 内部函数。

如果您需要在本地环境中执行此操作,这很有意义。也就是说,如果你想定义只在外部和内部函数中可见但在外部函数之外不可见的私有变量。或者,您可能希望 use "strict" 在外部函数内。

如果内部函数的创建取决于上下文,这也是有意义的。然后,也许您想 return 根据上下文信息使用不同的函数。