Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在嵌套函数中使用var关键字_Javascript_Syntax - Fatal编程技术网

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

Javascript 在嵌套函数中使用var关键字,javascript,syntax,Javascript,Syntax,我发现自己编写了很多由嵌套函数组成的函数 我喜欢在这样做时使用这种模式,因为我发现使用eclipse大纲视图很容易再次找到它们 var outer_func = function(){ var inner_func1 = function(){ //code } var inner_func2 = function(){ //code } } 我的问题是:如果我从嵌套/内部函数中删除var关键字,会有任何范围上的差异吗 谢谢您的建议。如果您不使用internalva

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

我喜欢在这样做时使用这种模式,因为我发现使用eclipse大纲视图很容易再次找到它们

var outer_func = function(){

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

}
我的问题是:如果我从嵌套/内部函数中删除var关键字,会有任何范围上的差异吗


谢谢您的建议。

如果您不使用internal
var
关键字,那么您将创建名为
internal\u func1
internal\u func2
的全局函数。保持
var

是,当执行外部函数时,“内部”函数将变为全局函数。一般来说,最好使用函数声明,因为它们是先处理的

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

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

函数是它们自己的域,局部变量仅在执行堆栈中公开。(或大多数人所说的“作用域”)如果声明变量时没有局部性(是局部的)。,它会直接进入窗口(全局)对象,并且在函数完成时不会被垃圾收集。例如:

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);
}

请仅使用与ECMA-262相关的术语。不加区分地使用术语只会混淆(“自己的域”、“执行堆栈底层”、“位置”等)。您要查找的单词是scope。谢谢,已修复,但是“stack”完全有效。例如,这个网站是以什么命名的。是的,形成一个堆栈。包括堆栈的变量,但也可能包括其他变量,例如使用闭包和。堆栈还用作控制机制,以确定函数返回的位置。在这种情况下,作用域是完全不同的(例如,被调用的函数不能访问调用它们的函数的变量,它们在同一个堆栈中,但具有不同的作用域)。