我发现自己编写了许多由嵌套函数组成的函数。
我喜欢在这样做时使用这种模式,因为我发现使用日食轮廓视图很容易找到它们
var outer_func = function(){
var inner_func1 = function(){
//code
}
var inner_func2 = function(){
//code
}
}
我的问题:如果从嵌套/内部函数中删除var关键字,是否存在任何范围差异?
感谢任何建议。
答案 0 :(得分:1)
如果您不使用内部var
关键字,那么您将创建名为inner_func1
和inner_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);
}