javascript中奇怪的执行结果(立即执行函数)

在下面的例子中,将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();

以下是浏览器控制台的输出结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/huangbaokang/article/details/83340632