【问题标题】:How to manipulate variable scope?如何操作变量范围?
【发布时间】:2017-04-23 03:42:09
【问题描述】:

学习一些 TypeScript。 试图让这段代码工作:

...
ocrText: string;
...
foo() {
    Tesseract.recognize(<Tesseract.ImageLike>document.getElementById('image'))
       .then(function(result) {
            console.log(result);
            this.ocrText = result.text;
       });
}

收到此错误:Uncaught TypeError: Cannot set property 'ocrText' of undefined

控制台日志确实显示了对象的属性和值。

如何将“结果”对象中的“文本”属性的本地值提取到全局范围?

【问题讨论】:

  • 重新标记,因为这与 TypeScript 无关

标签: javascript lexical-scope dynamic-scope


【解决方案1】:

使用window 代替this

var Text = '';
(()=> fetch('www.example.com')
 .then(response => response.text())
 .then(text => window.Text=text))();

不太了解打字稿,但我猜它使用strict mode,其中this 未定义,而不是默认为全局window 对象,如果不在类实例的上下文中使用.

【讨论】:

  • 由此假设变量和函数的顶级声明;如果您不在全局范围内工作,只需省略 window.,它将引用您所在的任何封闭范围。
猜你喜欢
  • 2019-07-14
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 2013-10-26
相关资源
最近更新 更多