我如何从回调函数的外部范围使用变量

时间:2019-11-15 19:31:54

标签: javascript html closures

如何从函数的外部范围使用变量。我在这里创建了这个简单的例子

var view = {
    init(){
    const targetOne = document.querySelector(".targetOne"); 
    const targetTwo = document.querySelector(".targetTwo"); 
    var val = "outer scope";

    targetOne.addEventListener('click', (e) => {
      console.log('target one', val)

    });
    targetTwo.addEventListener('click', this.handleEvent);
  },

  handleEvent(e) {
        console.log('targetTwo ', val);
    }
}

view.init(); 

JS小提琴链接:https://jsfiddle.net/jr7b521x/50/

对于targetOne回调,我可以使用变量val,但是当我为targetTwo回调定义函数时,该变量val不在范围内定义。我觉得这里缺少一些非常简单的东西,我刷新了作用域链接和闭包,但是我无法获得

1 个答案:

答案 0 :(得分:0)

变量val在init()函数的范围内

要在handleEvent函数中获取它,您将需要通过参数传递它,或者它必须是视图对象的属性