摘要:代碼自上而下執行,但是在代碼執行前,會首先進行詞法分析,所以事實上,運行要分為詞法分析和執行兩個階段。分析函數聲明如如果上沒有屬性,則把函數賦給屬性如果上有屬性,則會直接覆蓋,把函數賦給屬性
JavaScript代碼自上而下執行,但是在js代碼執行前,會首先進行詞法分析,所以事實上,js運行要分為詞法分析和執行兩個階段。
詞法分析
詞法分析主要分為3步:
第1步:分析形參
第2步:分析變量聲明
第3步:分析函數聲明
如果存在函數嵌套,則從外往內進行詞法分析
具體步驟:
0、在函數執行的一瞬間,生產 Active Object(活動對象)
1.1 函數聲明的形參,形成AO的屬性,默認值是undefined,
1.2 接收形參,給剛剛形成AO的屬性的形參賦值
2.1 如果AO上還沒有age屬性,則給AO添加age屬性,默認值是undefined
2.2 如果AO上已經有age屬性,則不做任何操作。
3.1 如果AO上沒有foot屬性,則把函數賦給AO.foot屬性
3.2 如果AO上有foot屬性,則會直接覆蓋,把函數賦給AO.foot屬性
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85013.html
摘要:先說下這個老話題連續賦值例結果是什么這句簡單,而這句呢答案是,變成了全局變量了這是實際執行順序未使用聲明,所以變全局變量了例很早以前的面試題目了,相信很多人知道答案,考點詞法分析執行順序運算符優先級等這是我理解的實際執行順序我是這么猜想的自 先說下這個老話題:連續賦值 例1: function a(){ var o1 = o2 = 5; } a(); console.l...
摘要:一般的程序,是無法直接執行的,因為只能識別機器指令。所以要想執行一個程序,首先要將高級語言編寫的程序翻譯為匯編代碼,再將匯編代碼翻譯為機器指令,這樣才能識別并執行。 編譯器 編譯器是一個程序,作用是將一門語言翻譯成另一門語言。 一般的程序,CPU 是無法直接執行的,因為 CPU 只能識別機器指令。所以要想執行一個程序,首先要將高級語言編寫的程序翻譯為匯編代碼,再將匯編代碼翻譯為機器指令...
摘要:引擎會在代碼執行前進行詞法分析,所以事實上,運行分為此法分析和執行兩個階段。詞法作用域所謂詞法作用域是說,其作用域為在定義時詞法分析時就確定下來的,而并非在執行時確定。 先來看個常見的面試題如下: var a = 10; function test(){ alert(a); //undefined var a = 20; alert(a); //20 } te...
摘要:引擎會在代碼執行前進行詞法分析,所以事實上,運行分為此法分析和執行兩個階段。詞法作用域所謂詞法作用域是說,其作用域為在定義時詞法分析時就確定下來的,而并非在執行時確定。 先來看個常見的面試題如下: var a = 10; function test(){ alert(a); //undefined var a = 20; alert(a); //20 } te...
閱讀 1637·2021-10-27 14:13
閱讀 1881·2021-10-11 10:59
閱讀 3377·2021-09-24 10:26
閱讀 1934·2019-08-30 12:48
閱讀 3045·2019-08-30 12:46
閱讀 2040·2019-08-30 11:16
閱讀 1423·2019-08-30 10:48
閱讀 2748·2019-08-29 16:54