立即执行函数(IIFE)和普通函数的区别是什么?
(function foo () {
var var_of_concern;
}());
以及一个普通函数
function foo () {
var var_of_concern;
}
foo();
我的担忧是,如果我既没有从IIFE,也没有从函数中传出任何东西,那么IIFE会使内存保持更长时间的活性吗?
立即执行函数(IIFE)和普通函数的区别是什么?
(function foo () {
var var_of_concern;
}());
以及一个普通函数
function foo () {
var var_of_concern;
}
foo();
我的担忧是,如果我既没有从IIFE,也没有从函数中传出任何东西,那么IIFE会使内存保持更长时间的活性吗?
function hello() {
// some code
}(); // <---- ERROR
是语法错误。
当function
关键字出现在其他上下文中时(也就是任何有效的上下文),它不是函数声明,而是函数实例化(或函数定义;我得查一下规范)表达式。在JavaScript中,这些都可以作为表达式的一部分:
5
"hello"
false
(2 + 5)
(function() { alert("Hi!"); })
function
关键字不是出现在语句的绝对开头,因此它只是一个函数实例化表达式。
var a = function foo() {};
-foo
不是一个可以从此以后引用的函数...你通过a
引用它。 - Ian