簡體   English   中英

在回調中訪問全局定義的變量?

[英]Accessing a globally defined variable inside a callback?

我正在編寫一個 three.js 應用程序,需要訪問一個名為camera的變量,因為每當我單擊一個按鈕時,我都想上下移動相機。

但是,我的按鈕是嵌套回調,我想知道如何訪問回調中的變量?

例如

    let camera = ...
    let circles = document.querySelectorAll('circle');
    circles.forEach(function(c){
        c.onclick = function(e){
            circles.forEach(function(circle){
                circle.classList.remove('active');
                circle.classList.add('disabled');
            });
            e.target.classList.add('active');
            e.target.classList.remove('disabled');
            if (e.target.id === "example"){
                camera.position.set(0,0,0) //camera not defined
            }
            debugger;
        }
    });

我有點困惑為什么我可以在調試器點訪問circles變量,但是它一直說camera未定義。

只是猜測,也許是因為它沒有被使用它被優化掉了? 嘗試用相機做一些事情,打印它的名字或其他什么。 然后看看它是否在調試中可用。

你不能訪問 let 里面的變量。 訪問下面的 URL 它會有所幫助。

https://stackoverflow.com/a/58735690/10627591

如果要訪問聲明它的變量 var 關鍵字。

好吧,我無語了。

如果我嘗試在我想使用它的地方使用變量,例如camera.position.set(0,0,0) ,我可以在控制台中打印變量。

如果我不使用它,則會出現錯誤。

問題是我在實際編寫測試之前先嘗試調試和編寫測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM