【发布时间】:2021-12-24 09:48:54
【问题描述】:
我有一个变量 totalActivatedOffers,它在函数内部定义,在 IF 语句内部。我需要能够通过另一个函数在 IF 语句之外使用这个变量的值,但不能让它工作,它一直返回未定义。
我已经在脚本块的顶部声明了它,如下所示:
var totalActivatedOffers;
但仍然没有快乐。以下是如何为它分配值的示例(为说明而简化):
if ("SSO" in sessionStorage) {
setTimeout(function(){
if (firstArrayLength.length == 3) {
var totalActivatedSparksOffers = 4;
}
if (secondArrayLength.length == 3) {
var totalActivatedRewardsOffers = 7;
}
var totalActivatedOffers = totalActivatedSparksOffers + totalActivatedRewardsOffers;
}, 2500)
} // closes if SSO is inside session storage
// need to access the value here, outside of the IF statement
console.log('Total activated offers to subtract is ' + totalActivatedOffers);
任何帮助将不胜感激。
解决方案:
通过将其设为如下窗口变量来设法解决此问题:
window.totalActivatedOffers = totalActivatedSparksOffers + totalActivatedRewardsOffers;
【问题讨论】:
-
如果要访问全局变量,不要在本地重新声明!
-
注意
if之后的代码不会等待超时,所以它会在超时函数改变它之前记录totalActivatedOffers的值,即使你修复了变量声明。 -
谢谢大家,我设法通过将其设为窗口变量来解决问题
标签: javascript scope global-variables