我正在努力建立使用局部变量的技能。为了使变量成为局部变量,我在我想要使用它的函数中声明它,对吗?
但如果我经常使用这个功能,我不会一遍又一遍地声明这个变量吗?这样可以吗?
例如,如果我有这样的函数:
function myFunction() {
var myVariable;
// some code that requires myVariable
}
......我每次都会宣布myVariable。每次调用函数时,这是否会为myVariable留出内存空间?有没有解决的办法?
答案 0 :(得分:5)
是的,这是一个局部变量,即无法在此范围之外访问它。
这样做很好,实际上是推荐做法之一。
是的,每次调用时都会使用内存,但是当函数执行完毕时它被清除/垃圾收集(假设没有其他泄漏)。
还有一件事,你可以更改var
to a let
以获得更好的块范围...虽然在这个非常简单的情况下没有必要。
答案 1 :(得分:1)
每个函数调用都会在堆栈上创建另一个元素。当弹出堆栈的元素时,所有不再使用的局部变量都被垃圾收集。因此,如果需要,最好在本地声明变量,因为实际上会节省内存。
答案 2 :(得分:0)
也许你应该快速浏览一下javascript最佳实践:Here is one of many possible links
还有声明你不应该使用全局变量。您应该始终在此范围内声明变量。
您不会遇到任何内存问题。垃圾收集器将为您处理它。但是要确定垃圾收集器如何在Javascript中工作,这里有许多可能的链接Garbagecollector explanation javascript
我建议使用let代替var另一个链接以获取更多信息:let explenation
答案 3 :(得分:0)
基本上,如果在函数范围内声明它,则不需要更多的执行时间。
但是,声明它在函数中作用域可以节省内存,因为在执行该函数之后,该变量是不必要的,垃圾收集器在下次执行时删除它(概率)。如果它没有作用域,它仍然存在,直到脚本的执行结束。所以,你在整个运行时都有一个内存中的变量,这可能是不必要的。
为了帮助浏览器,您可以使用ECMAScript 2016 let
关键字进行变量声明,因为您可以定义明确的范围,浏览器可以更好地优化您的代码。
此外,使用const
关键字代替var
可以节省一点内存。因为这样你指定值不再被改变,这个事实导致更少的内存消耗。