首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么onClick方法中的parentCampaignId不在作用域内?

为什么onClick方法中的parentCampaignId不在作用域内?
EN

Stack Overflow用户
提问于 2019-06-12 18:07:27
回答 1查看 45关注 0票数 0

在此方法中,当我在while循环上面声明parentCampaignId时,在onClick方法中不再可以访问它。但是如果我在while中声明,我就可以访问onClick方法中的变量。为什么会这样呢?为什么作用域依赖于while循环?

我问了我的同事和一位高年级学生。他们不知道。我也尝试了谷歌搜索,但没有找到任何解决方案。

代码语言:javascript
复制
getBreadcrumbs() {
      let breadCrumbStack = [];
      let parentCampaign = this.getParentCampaign(this.props.campaign.get('parent_id'));
      while(typeof parentCampaign !== 'undefined') {
          let parentCampaignId = parentCampaign.get('campaign_id');
          breadCrumbStack.unshift({
              onClick: (() => {
                  window.location.href = '/cd/campaign/manage/campaign/'+parentCampaignId;  # Since parentCampaignId declared inside while it is accessible
              }).bind(this),
              label: parentCampaign.get('name')
          });
          parentCampaign = this.getParentCampaign(parentCampaign.get('parent_id'));
      }
      return breadCrumbStack;
  }
代码语言:javascript
复制
getBreadcrumbs() {
      let breadCrumbStack = [];
      let parentCampaign = this.getParentCampaign(this.props.campaign.get('parent_id'));
      let parentCampaignId = parentCampaign.get('campaign_id');
      while(typeof parentCampaign !== 'undefined') {
          breadCrumbStack.unshift({
              onClick: (() => {
                  window.location.href = '/cd/campaign/manage/campaign/'+parentCampaignId;  # Now parentCampaignId declared outside while and it is no longer accessible
              }).bind(this),
              label: parentCampaign.get('name')
          });
          parentCampaign = this.getParentCampaign(parentCampaign.get('parent_id'));
      }
      return breadCrumbStack;
  }

我希望在这两种情况下都能工作,但在第二种情况下(当parentCampaignId在while循环外部声明时)就不起作用了。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56559585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档