在嵌套函数中使用var关键字

时间:2012-06-20 01:50:44

标签: javascript syntax

我发现自己编写了许多由嵌套函数组成的函数。

我喜欢在这样做时使用这种模式,因为我发现使用日食轮廓视图很容易找到它们

var outer_func = function(){

  var inner_func1 = function(){
  //code
  }
  var inner_func2 = function(){
  //code
  }

}

我的问题:如果从嵌套/内部函数中删除var关键字,是否存在任何范围差异?

感谢任何建议。

3 个答案:

答案 0 :(得分:1)

如果您不使用内部var关键字,那么您将创建名为inner_func1inner_func2的全局函数。保留var

答案 1 :(得分:1)

是的,执行外部函数时,“内部”函数将变为全局。通常,最好使用函数声明,因为它们首先被处理。

function outer() {
  function inner() {
  }
  ...
}

仅使用需要在以后某个时间定义函数的表达式,例如基于直到后来才知道的某些条件。

答案 2 :(得分:1)

函数是他们自己的域,局部变量只暴露向下 执行堆栈。 (或大多数人称之为众所周知的“范围”)如果声明的变量没有地点(是本地的。),它会直接进入窗口(全局)对象并且不是垃圾功能完成时收集。例如:

function somefunc(){
   var a;
   function nested(){
      a=2;//this will edit parent function's variable a
   }
   function anothernested(){
      var b=5;//this will create local variable in nested function
      c=3;//this will create global variable
   }
   nested();
   console.log(a);
}