不清楚从函数中的javascript forEach循环返回

时间:2016-03-20 00:38:02

标签: javascript arrays

我试图理解一些js概念的基本原理,特别是我的函数返回定义值的原因

accountName只是一个简单的字符串,例如" facebook" 帐户的返回值只是一个数组

原始功能

function getAccount(accountName) {
    var accounts = Storage.getItemSync('accounts');
    var matchedAccount
    for(account in accounts){
      if (account.name === accountName){
        matchedAccount =  accountName;
      }
    }

   return matchedAccount;
}

工作版

function getAccount(accountName) {
    var accounts = Storage.getItemSync('accounts');
    var matchedAccount

    accounts.forEach(function(account) {
        if(account.name === accountName){
            matchedAccount = account
        }
    });
    return matchedAccount;

}

原始函数返回Undefined,而工作版本返回正确的结果。为什么会这样?我是否一直在迭代我的阵列?

1 个答案:

答案 0 :(得分:1)

这很简单,但仍然是个好问题。 在Javascript中forEach适用于数组,而(for x in y)适用于对象*

而for..in适用于数组,因为它通过对象字段而不是索引进行枚举。

请参阅此答案:Why is using "for...in" with array iteration a bad idea?

MDN文档: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in