【问题标题】:Accessing a globally defined variable inside a callback?在回调中访问全局定义的变量?
【发布时间】:2019-11-16 06:44:35
【问题描述】:

我正在编写一个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 未定义。

【问题讨论】:

  • @iliar 我设置了相机的初始位置,我只是试图极端简化我的示例,例如camera.position.set(0, 0, 10);
  • 你删掉了抛出“未定义”错误的代码部分......?你需要帮助......有人回答......嗯
  • @wahwahwah 我正在尝试在“...”中访问它,例如camera.position.set(0,0,0)
  • 你将什么存储到 cemera 变量中......是什么意思......在 cemera 中验证

标签: javascript


【解决方案1】:

好吧,我无语了。

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

如果我不使用它,则会收到错误消息。

问题是我在实际编写测试之前尝试先调试和编写测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多