Visual Studio bundler 导致 JS Uncaught ReferenceError: Cannot access variable before initialization 错误

Posted

技术标签:

【中文标题】Visual Studio bundler 导致 JS Uncaught ReferenceError: Cannot access variable before initialization 错误。我该如何解决这个问题?【英文标题】:Visual Studio bundler causes JS Uncaught ReferenceError: Cannot access variable before initialization error. Anyone know how I can fix this?Visual Studio bundler 导致 JS Uncaught ReferenceError: Cannot access variable before initialization 错误。有谁知道我该如何解决这个问题? 【发布时间】:2022-01-11 09:11:09 【问题描述】:

我有一个 AJAX 请求如下:

$.ajax(
  method: 'GET',
  url: '/api/some-data',
  headers: 
    'Content-Type': 'application/json'
  ,
  success: function(data) 
    
     if (data != null) 
      var userData = data;
      for (var key of Object.keys(userData)) 

        if (userData[key].BalanceYear == null) 
          var accYear = "Today";
         else 
          var accYear = userData[key].BalanceYear;
        
      // ETC, ETC, ETC

这很好用。但是,当我将它捆绑在 Visual Studio 中时,它会转换为:

$.ajax(
    method: "GET",
    url: '/api/some-data',
    headers: 
        "Content-Type": "application/json"
    ,
    success: function(n) 
        var t, i, r, u, f, e;
        if (n != null) 
            t = n;
            for (i of Object.keys(t))
                r = t[i].BalanceYear == null ? "Today" : t[i].BalanceYear,
                u = yearsArr.findIndex(n=>n === r),
                u === -1 && (yearsArr.push(r),
                yearsArr.sort(function(n, t) 
                    return n - t
                ));
            const o = new Map;
            for (const AccountName: n, Amount: i, BalanceYear: t of t)
                o.has(n) || o.set(n, yearsArr.map(()=>0)),
                f = t ? yearsArr.indexOf(t) : yearsArr.indexOf("Today"),
                o.get(n)[f] = i;
            function c(n, t) 
                return v(n) || a(n, t) || h(n, t) || l()
            
            // ETC, ETC, ETC

我得到的问题是:

未捕获的 ReferenceError:在初始化之前无法访问 't'

上线:

for (const AccountName: n, Amount: i, BalanceYear: t of t)

由于我无法真正控制 t,因此我不确定如何解决此问题,尤其是在问题行上方声明了 t(我还尝试在问题行之外声明 t AJAX 功能)。

有人知道我能做些什么来解决这个问题吗?

【问题讨论】:

您介意分享您转换为有问题行的代码吗? 【参考方案1】:

我发现这是由于这里的const

for (const AccountName: n, Amount: i, BalanceYear: t of t)

我删除了它,它现在似乎可以工作了。不幸的是,我不知道这背后的逻辑。

【讨论】:

以上是关于Visual Studio bundler 导致 JS Uncaught ReferenceError: Cannot access variable before initialization 错误的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 将 JavaScript 解释为导致错误的 C#

什么会导致 Visual Studio 中的 LNK2019 错误?

是啥导致 MS Visual Studio 无法识别构建错误?

是啥导致 Visual Studio 2017 中的文件名为空

带有 Visual Studio 2015 的 Git 切换分支导致更改

Visual Studio 自定义包含路径在链接时导致符号错误