局部变量在哪里?

时间:2015-07-06 11:50:06

标签: javascript anonymous-function

让我说我有一个

<!DOCTYPE html>
<html>

<head>
    <title>Eucalyptus</title>
</head>

<body style="background-color: #FFE11A">
    <div id="gore" style="background-color: #BEDB39">gore
        <button id="prvi" style="width: 50px; height: 50px; border-radius:10px;">Kurac</button>
        <div id="drugi">Drekec</div>
    </div>
    <div id="dolje">dolsdasdje</div>
    <script>
    var AAA1 = 1;
    (function(a, b) {
        var AAA3 = a + b;
        AAA2 = a * b;
    })(10, 10);
    </script>
</body>

</html>

我显然可以看到window.AAA1window.AAA2,但AAA3在哪里? 是否有可能以某种方式挂钩它并从控制台动态编辑它,或者它只是在机器代码中的某个地方混乱而且不再可访问?

3 个答案:

答案 0 :(得分:3)

AAA3local变量,无法在function或当前范围之外访问。

  

变量声明,无论它们出现在何处,都会在执行任何代码之前进行处理。用var声明的变量的范围是它的当前执行上下文,它是封闭函数,或者对于在任何函数外部声明的变量,是全局的。

详细了解JavaScript变量的范围:

MDN JavaScript Variable scope

Stackoverflow JavaScript Variable scope

<强>编辑:

看着Javascript Global Variables。它有很多可能对您有用的信息。

答案 1 :(得分:1)

在功能范围或全局范围内创建的JavaScript变量。

此处 var AAA3 在功能范围内创建,并存储在堆栈内存中。

一旦函数执行完成,就会弹出在堆栈上为该函数创建的数据段,并释放本地变量的内存保持。 因此,在函数执行完成后它们不可用。

答案 2 :(得分:0)

它包含在创建它的函数的范围内。如果您希望在全局范围内访问它,请执行window.AAA3 =&#39; ??&#39;;

有关JavaScript范围的概述,请参阅此其他答案:

What is the scope of variables in JavaScript?