当前位置:   jquery > 正文

JavaScript - ForEach

javascript,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我有一个JavaScript数组对象.像这样的东西:

var people = [
  { id:1, firstName: 'Joe', lastName: 'Smith' },
  { id:2, firstName: 'Bill', lastName: 'Smith' }
];

我正在通过人们进行迭代forEach.这是我的代码:

function doSomething() {
  people.forEach(function(person, self) {
    self.helpPerson(person);
  }, this);
}

function helpPerson(person) {
  alert('Welcome ' + person.firstName);
}

我试图helpPersonforEach循环内调用.但是,当我尝试调用它时,我收到一条错误消息:

TypeError: self.helpPerson is not a function

如果我添加console.log(self);,"0"将打印到控制台窗口.这意味着我没有正确传递我的参数.或者,我误解了闭包(就在我认为我完全理解它的时候:)).

那么,为什么不self退出呢?



1> Jonathan.Bri..:

你并不需要调用helpPerson用this,self或任何其他方面.只需直接调用它:

var people = [
  { id:1, firstName: 'Joe', lastName: 'Smith' },
  { id:2, firstName: 'Bill', lastName: 'Smith' }
];

function doSomething() {
  people.forEach(function(person) {
    helpPerson(person);
  });
}

function helpPerson(person) {
  alert('Welcome ' + person.firstName);
}

当您登录self到控制台时,您看到"0",因为它正在打印循环迭代的索引.

请参阅forEach 的文档,了解哪些回调传递给它的forEach函数.

通常,self用于捕获closure(var self = this;)中的上下文.请参阅此问题的相关链接,因为这是一个非常重要的概念.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/jquery/detail/13458
推荐阅读
相关标签
  

闽ICP备14008679号