变量local的多个实例用于具有不同值的函数

时间:2018-01-31 20:34:13

标签: javascript ecmascript-6

我在javascript中有一个问题,函数本地的同一个变量的多个实例是否存在模拟,每个实例都有自己的值?这可能与闭包有关,因为函数中的变量可能有一个值,但在该函数中定义的函数内部可能有另一个值?

1 个答案:

答案 0 :(得分:0)

嗯,不,变量只能包含一个值,而一个函数每个名称只能有一个变量。您不能在同一范围内拥有多个变量实例。

但是,您可以拥有"相同"的多个实例。变量在"相同"的不同实例中范围。调用函数时很常见:

function example(x) {
    console.log(x);
}
example(1);
example(2);

此处我们有两个变量x的实例,分别包含不同的值(12)。当然,这里两个变量不会同时存在。然而,当我们使用闭包时,就会发生这种情况:正如您所观察到的那样:

function makeLogger(x) {
    return function logger() {
        console.log(x);
    }
}
let loggers = [];
for (const i of [1, 2, 3]) {
    loggers[i] = makeLogger(i);
}
const [log1, log2, log3] = loggers;
log1();
log3();

在这个例子中,三个记录器函数中的每一个都有自己的变量x,并且有自己的值。