【发布时间】:2021-11-19 00:03:31
【问题描述】:
我有一个非常简单的 Javascript 代码,无法完全理解运行顺序和输出。
function f1() {
n = 999;
change = function() {
n = "Barry";
};
return change;
}
var result = f1();
result();
console.log(n)
change();
console.log(n)
输出:
Barry
Barry
据我了解,我定义了一个全局变量 n,并且 n = 999。 然后我创建了一个将 globalen 定义为“Barry”的函数。并将此功能分配给更改。并返回此更改变量。
然后我触发这个 f1(),并对结果进行更改。在这个时间点,更改是一个函数,但尚未运行。
那么为什么第一个 Console.log 会返回我的 Barry?然后更改还没有运行..
【问题讨论】:
-
继续问自己“如果
change是全局变量,返回它有什么意义?”
标签: javascript closures