gpt4 book ai didi

JavaScript 词法作用域和变量的生命周期

转载 作者:行者123 更新时间:2023-11-30 06:58:37 25 4
gpt4 key购买 nike

我很好奇为什么会这样:

function doThis(){
counter = 0;
return counter;
};

console.log(counter); // returns "reference error: can't find variable"

这是有道理的,因为变量不存在于函数之外。但是如果我创建一个 self 执行的函数:

(function doThis(){
counter = 0;
return counter;
})();

console.log(counter); // returns 0

counter 变量怎么还存在?这不是一个闭包,似乎没有任何东西从外部引用这个变量,所以它不应该被垃圾收集销毁吗?

最佳答案

您将其创建为全局变量,因为您没有在变量名称前包含 var

第一个例子中的函数还没有被调用,所以变量还没有被创建,在第二个例子中它有,所以你得到 0

您的代码应该做的是:

function doThis(){
var counter = 0;
return counter;
};

关于JavaScript 词法作用域和变量的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com