1

我正在自学使用 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); 
}

为什么这在使用前不需要自己运行?我是否误解了结尾括号的目的?

谢谢你。

4

2 回答 2

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

应该完全一样。

于 2016-01-05T15:04:20.527 回答
0

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

如果您需要在本地环境中执行此操作,这是有道理的。即,如果您想定义仅在外部和内部函数中可见但在外部函数外部不可见的私有变量。或者,您可能想要use "strict"在外部函数内部。

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

于 2016-01-05T15:24:35.197 回答