Javascript 在嵌套函数中使用var关键字
我发现自己编写了很多由嵌套函数组成的函数 我喜欢在这样做时使用这种模式,因为我发现使用eclipse大纲视图很容易再次找到它们Javascript 在嵌套函数中使用var关键字,javascript,syntax,Javascript,Syntax,我发现自己编写了很多由嵌套函数组成的函数 我喜欢在这样做时使用这种模式,因为我发现使用eclipse大纲视图很容易再次找到它们 var outer_func = function(){ var inner_func1 = function(){ //code } var inner_func2 = function(){ //code } } 我的问题是:如果我从嵌套/内部函数中删除var关键字,会有任何范围上的差异吗 谢谢您的建议。如果您不使用internalva
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”完全有效。例如,这个网站是以什么命名的。是的,形成一个堆栈。包括堆栈的变量,但也可能包括其他变量,例如使用闭包和。堆栈还用作控制机制,以确定函数返回的位置。在这种情况下,作用域是完全不同的(例如,被调用的函数不能访问调用它们的函数的变量,它们在同一个堆栈中,但具有不同的作用域)。