一、理解函數作用域需要理解以下幾點:
1、函數變量的作用域有全局變量和局部變量兩種,全局變量寫在函數的最前面,局部變量寫在函數體內,局部變量省略了var 也就默認成為了全局變量!
2、函數體內部可以讀取到函數外的變量,而函數外不能讀取到函數內的變量!
在理解了函數變量的作用域之后,也需要理解函數的作用域鏈了:
1、每一個函數都有一個與之相關的作用域鏈,當js在查找變量X時,它會從鏈的第一個對象開始查找,如果這個對象有一個名為X的屬性值,則會直接使用這個 屬性值,如果沒有就繼續下一個對象尋找...一直找到最后都沒有的話則會輸出ReferenceError引用錯誤!
2、作用域鏈查找的順序是:當前函數對象-->上一層函數對象...-->window全局對象!