- 實例:
- function test(a,b){
- var name='大漠窮秋';
- function test2(){
- var myarg=name;
- }
- test2();
- }
- test(1,2);
- 對於外層的test這個function來說,它的作用域鏈是這樣的:
- [{},window]
- {}?{a:1, b:2,name:undefined,test2:指向test2這個function}
- 這種調用方式下this指向window
- 【注】函數的創建過程:
- 活動對象:activeObect
- Arguments對象:存儲length、callee屬性
- 給活動對象創建一個arguments屬性,並讓他指向第二步創建的arguments對象!
- 在活動對象裏邊創建其他屬性; a,b
- 局部變量成爲活動對象的屬性;還有內部的函數亦如此;name,function
- 活動對象被插入到作用域鏈裏邊,插入鏈表的頂部;
- 若未指定this的調用對象,則永遠指向window;
- 屬性查找:從左向右; 執行的時候纔會被賦值!