我发现自己经常编写嵌套函数的函数。
在这样做时,我喜欢使用这种模式,因为我发现它们易于在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
}
}
是的,当外部函数被执行时,“内部”函数将变为全局函数。一般来说,最好使用函数声明,因为它们会首先被处理。
function outer() {
function inner() {
}
...
}
只有在稍后需要定义函数的情况下才使用表达式,例如基于稍后才知道的某些条件。
函数是它们自己的域,局部变量仅在执行堆栈下暴露出来(或者大多数人所说的谚语“作用域”)。如果一个变量被声明为非局部变量(即不是局部的),它会直接进入 window(全局)对象,并且在函数完成后不会被垃圾回收。例如:
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);
}
var
关键字,那么你将会创建名为inner_func1
和inner_func2
的全局函数。请保留var
。