我使用webpack
来编译我的项目,然后我发现如果有承诺,this
将被编译为_this2
。
问题在于,当我在承诺中使用断点时,{ - 1}}将始终在chrome-dev-tools中this
。
这是一个错误吗? Chromium开发团队难以解决这个问题吗?
现在,源代码:
undefined
编译的代码:
因为有源地图,Chrome会为我显示源代码,并且会正确检查承诺之外的webpack
。
但是,承诺中的this
将是this
答案 0 :(得分:2)
正如您在将代码编译为es5
时指出的那样,生成的代码使用_this
技巧从声明的上下文中捕获它。问题是源映射本质上只是文本映射,将一部分已编译的代码映射回源代码。这意味着Chrome(或任何其他当前调试器)将无法猜测光标下的this
在源代码中具有不同的含义。
解决此问题的一种简单方法是为_this
(或您的案例中为this_2
)添加一个手表,该手表会显示捕获的内容。