看了別人的博客隨手記錄下
先看一下以下的代碼
1 var a=1,b=2,c=3; 2
3 (function(){ 4 var a=b=1; 5 })(); 6
7 console.log(a); 8 console.log(b);
這是大家眾所周知的閉包了,沒錯,閉包的一個很重要的用途就是變量不能在外部訪問,不會污染外部變量,所以大家是不是會認為7,8行的結果分別是1 2 呢?其不然,7,8行的正確結果是1,1。
為什么會這樣呢?我一開始也是認為結果是結果是1 2,其實JS是這樣執行的,在閉包中var聲明的是局部變量,所以a是局部變量,而b呢,b沒有用var聲明,所以在閉包中b是全局變量,所以前面的b=2被閉包里面的b=1覆蓋了,所以輸出a和b都是1
我是這么理解的。大家有不同的理解可以留言,由於第一次寫博客,文筆欠佳,大家見諒