Chrome开发工具:监视变量不可用(无法在封闭范围内检测到)[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome开发工具:监视变量不可用(无法在封闭范围内检测到)[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我在chrome中运行片段并观察变量。 然而,令我困惑的是:变量abc都在闭包范围内声明,但ab不可用。请说清楚为什么会这样?

watch variable in chrome dev tool

offcial Doc没有说清楚。

我做了一个假设:“chrome的监视表达式中的变量必须在本地范围内使用,或者在全局范围内声明,否则即使已在闭包范围中声明它也不可用”。这个命题是否正确?

Chrome版本:60.0.3

以下是我测试的代码:

var globalV = 123;
;(function(){
var a = function(){}
var b = function(){a()}
var c = function(){b()}
var d = function(){
    debugger
    c()
  }
d()
})()
答案

看起来它可能是一个错误。我创建了一个问题,以便DevTools团队中的某个人会看到它:https://crbug.com/762265

另一答案

对我来说,这似乎是一个合理的优化 - 为什么在运行时将未使用的变量包含在闭包中。

我的意思是,它们可以被包括在内,但是解释器/编译器只包括用过的 - 并且调试器使用相同的原理。

例如,在C#(.NET Core 2.0)中,它的工作方式相同:enter image description here

以上是关于Chrome开发工具:监视变量不可用(无法在封闭范围内检测到)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 chrome 开发工具中使用监视表达式来监视角度组件中的变量(“this”对象的属性)?

小米范工具系列之八:小米范越权漏洞检测工具

WebGL 不可用,GPU 进程无法启动

无法引用封闭范围中定义的非最终局部变量按钮,随机方法错误

无法分配最终的局部变量“name”,因为它是在封闭类型中定义的

模拟 Chrome 开发者工具中不可用的焦点页面选项