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

问题描述 投票:2回答:2

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

我在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()
})()
javascript google-chrome debugging google-chrome-devtools watch
2个回答
2
投票

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.