我发现自己编写了很多由嵌套函数组成的函数。
这样做时我喜欢使用这种模式,因为我发现使用 eclipse 大纲视图再次很容易找到它们
var outer_func = function(){
var inner_func1 = function(){
//code
}
var inner_func2 = function(){
//code
}
}
我的问题:如果我从嵌套/内部函数中删除 var 关键字,是否有任何作用域差异?
感谢您的任何建议。
我发现自己编写了很多由嵌套函数组成的函数。
这样做时我喜欢使用这种模式,因为我发现使用 eclipse 大纲视图再次很容易找到它们
var outer_func = function(){
var inner_func1 = function(){
//code
}
var inner_func2 = function(){
//code
}
}
我的问题:如果我从嵌套/内部函数中删除 var 关键字,是否有任何作用域差异?
感谢您的任何建议。
如果您不使用 innervar
关键字,那么您将创建名为inner_func1
and的全局函数inner_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);
}