变量超出范围不起作用

时间:2018-01-31 17:19:59

标签: javascript scope

如何在生物信息循环之外调用senator_party信息,还在if(current_legislator.type === "senator")语句中调用?

我对此代码的目标是:

  • 循环访问数据以获取参议员数据 - 正常工作
  • 检查参议员并使用参议员数据 - 工作
  • 通过参议员生物数据循环获取聚会信息 - 作品
  • 在生物信息循环之外显示参与方信息 - 无法正常工作

我读了很多关于此的文章,如果你在函数范围之外创建变量,那么共识似乎就是这样,那么如果在新函数中更新变量,它将更新范围之外的变量信息。 / p>

我可以通过代码中的评论更好地了解我要做的事情。

 $(congressional_district.current_legislators).each(function(index, current_legislator) {

      // check if Senator
      if(current_legislator.type === "senator") {
        // store empty party to use outside of scope
        var senator_party;

        // loop from bio info
        $(current_legislator.bio).each(function(index, bio_item) {

          // store new info in party variable
          var senator_party = bio_item.party;

          // call variable in alert - this works 
          alert(senator_party);

        });

        // call new variable outside of scope - returns undefined
        alert(senator_party);

      }
    })

2 个答案:

答案 0 :(得分:1)

更改

var senator_party = bio_item.party;

循环内部。到:

senator_party = bio_item.party;

这样你就不会重新创建变量了。

答案 1 :(得分:0)

我在每个函数中再次声明变量,不得不删除“var =” $(congressional_district.current_legislators).each(function(index,current_legislator){

  // check if Senator
  if(current_legislator.type === "senator") {
    // store empty party to use outside of scope
    var senator_party;

    // loop from bio info
    $(current_legislator.bio).each(function(index, bio_item) {

      // store new info in party variable
      senator_party = bio_item.party;

      // call variable in alert - this works 
      alert(senator_party);

    });

    // call new variable outside of scope - returns undefined
    alert(senator_party);

  }
})