在下面的例子中,将IIFE赋值给一个变量message。message返回另外一个函数,该函数只是简单地输出变量x的值。有趣的事情是,当我们把变量x的初始值作为参数传入函数时,可以在函数执行时所创建的闭包中捕获变量x的值。无论在外部作用域中x的值发生了什么变化,闭包将记住函数执行时变量x的值。
var x = 42;
console.log(x);
var message = (
function(x){
return function(){console.log("x is "+x)};
}
)(x);
message();
x=12;
console.log(x);
message();
以下是浏览器控制台的输出结果: