了解for循环内的闭包?

时间:2018-11-16 14:44:01

标签: javascript jquery closures

我试图将我的头部包裹在发现的闭合处,我了解表面上的闭合处,但在尝试理解以下内容时遇到了麻烦。

我有一个div,其中包含3个输入字段,并且在所有这些上方都有一个灰色框,如下所示:https://i.imgur.com/dq83evT.png?1,并且当使用jQuery触发输入字段的focus事件时,灰色框应变为具体文本取决于输入字段。

以下是实现此目的的以下代码:

function main() {
  var tipText = [{
    'id': '#email',
    'tip': 'Only @pocketbook.com addresses allowed.'
  }, {
    'id': '#name',
    'tip': 'Your name must be capitalized.'
  }, {
    'id': '#employeeId',
    'tip': 'Employee IDs are found on the back of your badge.'
  }];

  function tipCallback(tip) {
    return function() {
      $('#tip').text(tip);
    };
  }

  function getTip() {
    for (var i = 0; i < tipText.length; i++) {
      var item = tipText[i];
      $(item.id).focus(tipCallback(item.tip));
    }
  }

  getTip()
}

$(document).ready(main);

我知道我们需要关闭,因为状态不会在for循环中保留,但我仍然可以真正理解它。

0 个答案:

没有答案