【问题标题】:this is undefined in devtools even if this is not undefined这在 devtools 中是未定义的,即使这不是未定义的
【发布时间】:2017-02-15 15:47:25
【问题描述】:

“this”在 devtool 控制台中是未定义的,而它显然不是未定义的。 一定是 devtools 的 bug?

【问题讨论】:

  • 是的,更多的操作系统更少...我不知道如何准确解释...问题是您正在“检查”的代码实际上是 ECMAScript 5,但您正在“看到”的代码" 是 ES6。当您在控制台中键入this 时,浏览器会尝试显示this 变量,但在源代码中没有this 变量,转译器通常使用_this... 而不是检查@987654328 @试试_this你会看到正确的值
  • 谢谢,你是对的。唯一的区别是,在我的情况下,它看起来像 _this2
  • 是的,这取决于几件事......看一下转译代码(ES5),看看变量的真实名称
  • 尝试选择this(双击它),然后右键单击并选择Evaluate in console。也许它足够聪明。

标签: javascript ecmascript-6 google-chrome-devtools aurelia es6-class


【解决方案1】:

当您正在检查 ES6/ES2015+ 代码(感谢源映射)而不是 实际代码(在 ES5 转译代码中的可读性较差)时,this 属性与您在源代码中看到的内容。

要访问this,请尝试在控制台中评估_this_this1_this2 等,以找到您要查找的上下文。

const loaded = () => {
  this.setState({ loading: false });
};

// will be compiled/transpiled to

var _this = this;
var loaded = function loaded() {
  _this.setState({ loading: false });
};

参考:https://www.sitepoint.com/bind-javascripts-this-keyword-react/

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多