JavaScript代碼自上而下執行,可是在js代碼執行前,會首先進行詞法分析,因此事實上,js運行要分爲詞法分析和執行兩個階段。函數
詞法分析
詞法分析主要分爲3步:
第1步:分析形參
第2步:分析變量聲明
第3步:分析函數聲明對象
若是存在函數嵌套,則從外往內進行詞法分析ip
具體步驟:
0、在函數執行的一瞬間,生產 Active Object(活動對象)io
1.1 函數聲明的形參,造成AO的屬性,默認值是undefined,
1.2 接收形參,給剛剛造成AO的屬性的形參賦值function
2.1 若是AO上尚未age屬性,則給AO添加age屬性,默認值是undefined
2.2 若是AO上已經有age屬性,則不作任何操做。變量
3.1 若是AO上沒有foot屬性,則把函數賦給AO.foot屬性
3.2 若是AO上有foot屬性,則會直接覆蓋,把函數賦給AO.foot屬性undefined