函數中局部變量若是與外部變量重名,則用的是函數內部局部變量,用完就會被釋放。個人理解函數是一個function定義的代碼段,以上函數變量做用域能夠以下理解:java
類比於java代碼理解,對於鏈接、編譯完成的計算機可識別的機器碼而言每一次函數調用都是在特定位置插入了一段function標識的代碼段,文件引用也是在特定位置加入了代碼段,也就是說最後的機器碼是一個大大的代碼段。在這個大大的代碼段裏來看,一個函數裏面定義的局部變量和做用域更大的同名變量乃至全局變量,其名稱其實能夠理解成一個簡稱,其全稱是位置、函數名等包含在內的標識符,而一次函數調用產生的那個代碼段,調用結束後其內部局部變量與之後的代碼就沒有關係了,固然能夠銷燬釋放內存。數組
不一樣做用域的同名變量能夠理解爲放在一個數組中,各個同名變量簡稱同樣可是以位置 文件名 函數名等標識而成全稱是不一樣的,找一個名爲‘x’的變量能夠理解成在這個數組裏按範圍由小到大的順序找這個簡稱的東西。函數
第一篇原創,這麼短。內存