在此方法中,当我在while循环上面声明parentCampaignId时,在onClick方法中不再可以访问它。但是如果我在while中声明,我就可以访问onClick方法中的变量。为什么会这样呢?为什么作用域依赖于while循环?
我问了我的同事和一位高年级学生。他们不知道。我也尝试了谷歌搜索,但没有找到任何解决方案。
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;
}
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循环外部声明时)就不起作用了。
发布于 2019-06-13 10:46:56
只是猜测而已。我猜你的第一个parentCampaignId
是空的,并且你没有在循环结束时更新parentCampaignId
,所以parentCampaignId
永远是空的,你会认为它是不可访问的。
您可以使用console.log
查看第一个parentCampaignId
是什么吗
https://stackoverflow.com/questions/56559585
复制相似问题