Chrome开发工具:监视变量不可用(无法在封闭范围内检测到)[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome开发工具:监视变量不可用(无法在封闭范围内检测到)[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我在chrome中运行片段并观察变量。
然而,令我困惑的是:变量a
,b
,c
都在闭包范围内声明,但a
和b
不可用。请说清楚为什么会这样?
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)中,它的工作方式相同:
以上是关于Chrome开发工具:监视变量不可用(无法在封闭范围内检测到)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 chrome 开发工具中使用监视表达式来监视角度组件中的变量(“this”对象的属性)?