1. 程式人生 > >javascript中奇怪的執行結果(立即執行函式)

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();

以下是瀏覽器控制檯的輸出結果:

在這裡插入圖片描述