小编Bob*_*off的帖子

Chrome调试器:未在JavaScript Closure中加载的未使用的变量

不是问题,因为我发现了导致它的原因,但仍然是一个巨大的怪癖:

显然,当您创建闭包时,JavaScript引擎不会保存其所有范围变量.它只保存内部函数真正使用的那些.如果您暂停程序,这会导致调试器中的结果不正确.以下是如何重现这一点

1.在Chrome中运行以下代码段:

function foo (){
    var id = 0
    var id2 = 1
    return function foo2(){
        //console.log(id)
        console.log(id2)
        debugger
    }
}

foo()()
Run Code Online (Sandbox Code Playgroud)

请注意,在闭包范围中只定义了id2: 只有id2在闭包范围内定义

2.取消注释console.log语句.

闭包范围现在有两个变量 闭包范围中有两个变量

有人知道为什么会发生这种情况(我认为这是为了节省内存),还有其他任何方面我们都应该注意.

javascript google-chrome google-chrome-devtools

6
推荐指数
0
解决办法
1210
查看次数

编译为机器语言的程序如何在不同的机器上运行?

在学校,我们被教导编译器将计算机程序编译为机器语言.我们还被告知机器语言包含对硬件的直接指令.然后,如何在具有不同硬件的多个计算机配置上运行相同的编译程序?

operating-system compiler-theory

5
推荐指数
1
解决办法
2596
查看次数