`当使用箭头函数时,“开发工具”中未定义“this”
`this` is undefined in Dev Tools when using arrow function
我使用箭头函数,并使用Chrome和Firefox开发工具进行调试。我得到,this
是未定义的,尽管代码仍然有效。
例如:当在以下断点上暂停时,我在控制台中键入this
,它显示为undefined
,即使console.log
显示正确的this
:
class A {
f = () => {
debugger;
console.log(this);
};
}
new A().f();
我的假设是,这与源地图有关。
以下是我用来构建代码的工具:
- webpack(devtool:eval)
- babel装载机(es5预设)
- 打字脚本加载程序
问题是chrome调试器认为源代码中的this
指的是运行时this
,但typescript源代码中箭头函数内的this
实际上被转换为_this
,因此它向您显示了错误的对象。
这就是为什么它只是调试器中的一个问题,并且代码仍然可以正常工作。当我需要调试有问题的东西时,我只需将它复制到控制台,并在它前面加一个下划线。
这可能是一个问题,因为JS箭头函数没有this
,this
的值可能引用了包含箭头函数的对象,每个箭头函数都被重新访问,MDN关于箭头函数表达式的文章
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- Chrome开发工具中使用了哪些框架和库
- `当使用箭头函数时,“开发工具”中未定义“this”
- 有没有一种方法可以使用任何浏览器扩展整个dom树'的开发工具
- $.get-response没有responseJSON方法,但当我在Chrome开发工具中绑定它时,它确实有
- 无法在Chrome开发工具中实时编辑Javascript
- 在Chrome开发工具中测量步骤之间的时间
- Redux开发工具Chrome扩展Immutable.js导致错误
- 未注释img´除非调整浏览器大小、缩放或打开开发工具,否则不会显示
- Chrome 开发工具:如何计算加载弹出窗口并将其显示在页面上所需的总时间
- AWS S3 JavaScript 开发工具包 getSignedUrl 仅返回基本路径
- 是否有“”的键盘快捷键;暂停动画”;Chrome开发工具中的功能?(F12)
- 哪个webpack开发工具适合chrome应用程序
- 如何使用Chrome'查看窗口对象中定义了哪些变量;的开发工具
- Chrome在刷新应用程序后30秒以上没有响应(打开了开发工具)
- Chrome开发工具未捕获AJAX请求
- Chrome开发工具命中代码但未命中断点
- 无法在javascript中访问PHP数组,初始化为数组的javascript对象在chrome开发工具中最终为空
- Fetch元素鼠标当前指向的Chrome开发工具已启用
- 在Chrome开发工具中隐藏JavaScript文件