JavaScript中var a=b=c=d的發現


看了別人的博客隨手記錄下

先看一下以下的代碼

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

 

我是這么理解的。大家有不同的理解可以留言,由於第一次寫博客,文筆欠佳,大家見諒

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM