Javascript 如何在经常使用的函数中使用局部变量而不必每次声明它?

Javascript 如何在经常使用的函数中使用局部变量而不必每次声明它?,javascript,scope,Javascript,Scope,我正在努力培养使用局部变量的技能。为了使变量成为局部变量,我在我想要使用它的函数中声明它,对吗 但是如果我经常使用这个函数,我会一遍又一遍地声明这个变量吗?这样行不行 例如,如果我有这样一个函数: function myFunction() { var myVariable; // some code that requires myVariable } …我每次都要声明myVariable。这是否会导致每次调用函数时都为myVariable留出内存空间?有办法解决这个问题吗 是,这

我正在努力培养使用局部变量的技能。为了使变量成为局部变量,我在我想要使用它的函数中声明它,对吗

但是如果我经常使用这个函数,我会一遍又一遍地声明这个变量吗?这样行不行

例如,如果我有这样一个函数:

function myFunction() {
  var myVariable;

  // some code that requires myVariable
}

…我每次都要声明myVariable。这是否会导致每次调用函数时都为myVariable留出内存空间?有办法解决这个问题吗

是,这是一个局部变量,即无法在此范围之外访问它

这是很好的做法,事实上也是推荐的做法之一

是的,每次调用它时都会使用内存,但当函数执行完毕时(假设没有其他泄漏),内存会被清除/垃圾收集


不过,还有一件事,您可以更改块范围以获得更好的块范围。。。虽然在这种非常简单的情况下不是必需的。

每个函数调用都会在堆栈上创建另一个元素。当栈的元素被弹出时,所有不再使用的局部变量都被垃圾收集。因此,如果您愿意,最好在本地声明变量,因为这样实际上可以节省内存。

也许您应该快速了解一下javascript最佳实践:

还有一条规定,您不应该使用全局变量。您应该始终在此范围内声明变量

您将不会在任何内存问题中运行。垃圾收集器将为您处理它。但是为了确定垃圾收集器在Javascript中的工作方式,这里有许多可能的链接


我建议使用let而不是var另一个链接来获取更多信息:

基本上,如果在函数范围中声明它,它不会占用更多的执行时间

但是,在函数中声明它的作用域可以节省内存,因为在执行该函数后,该变量是不必要的,垃圾收集器在下一次执行时删除它(概率)。如果它没有限定作用域,它仍然存在,直到脚本执行结束。因此,在整个运行时,内存中都有一个变量,这可能是不需要的

为了帮助浏览器,可以使用ECMAScript 2016
let
关键字进行变量声明,因为在这里定义了一个明确的范围,浏览器可以更好地优化代码


另外,使用
const
关键字而不是
var
可以节省一点内存。因为这样可以指定is值不再更改,并且这一事实会减少内存消耗。

一旦函数执行,在作用域内声明变量是正确的,所有局部变量都是垃圾收集的,除非您从函数返回某个内部函数,该函数将在
myVariable
上保持闭包。换句话说,这是完全好的。