let i=0;
let j=1;
let k=[0
];k[i]
=j;let z=k;
//因為k是引用資料型別,所以z和k共用乙個位址
console.
log(z)
;//[1]k[0
]=2;
console.
log(z)
;//[2]z[0
]=3;
console.
log(k)
;//[3]k=[
1,2]
;//重新開闢乙個位址 重新賦值給k
console.
log(z)
;//[3];
/** * 堆 棧
* 儲存基本資料型別 存引入資料
* 具體的值 位址
*/
//執行上下文;
全域性在建立之前會建立go;函式在呼叫之前會建立ao;確定當前變數被呼叫的時候在什麼當前環境下,變數取值是什麼;
//全域性上下文
//1、全域性物件window
執行上下文的生命週期:
1、建立
(變數和函式的提公升)
2、執行
(執行函式體的**[會改變當前變數和全域性變數的值]);
//執行棧:存放執行上下文(最底層是go,最上面是正在呼叫的函式)
//注:filo 進棧 出棧
3、銷毀
//區域性上下文
//1、建立區域性物件 ao active object
//2、預編譯
// 1.形參 變數
// 2.形參 變數賦值 undefined
// 3.形參和實參相統一
// 4.函式提公升
// 5.確定this的指向(由呼叫者確定)
// 6.確定作用域(語法環境,在**宣告,就確定在**)
// 7.初始化作用域鏈
//3、執行函式體的**
//ec execution context
//分類
//1、全域性上下文:開啟乙個視窗就會建立乙個全域性上下文(關閉即銷毀);
//2、區域性上下文:呼叫函式時就會建立乙個區域性上下文(函式執行完就銷毀);
全域性只有乙個;區域性可以有多個;乙個函式呼叫多次會建立多個;
//3、eval上下文(了解):可以解讀js字串中的**;
// filo 先進後出 first in last out
//變數提公升:var宣告的變數(除函式內),只提公升變數的宣告。
//函式提公升:字面量宣告的函式;提公升整個函式體
function
f70(
) console.
log(f70)
;//fn
var f70 =
"adc"
; console.
log(f70)
;//adc
var f70 =
123;
console.
log(f70)
;//123
}f70()
;//執行上下文
//ec execution context
//功能:**執行之前的準備工作,確定當前環境下變數的取值
//分類
//1、全域性上下文:開啟乙個視窗就會建立乙個全域性上下文(關閉即銷毀);
//2、區域性上下文:呼叫函式時就會建立乙個區域性上下文(函式執行完就銷毀);
作用域:靜態
執行上下文:動態的
//3、eval上下文(了解):可以解讀js字串中的**;
// filo 先進後出 first in last out
//變數提公升:var宣告的變數(除函式內),只提公升變數的宣告。
//函式提公升:字面量宣告的函式;提公升整個函式體
//先提公升變數再提公升函式
//如果函式體要使用變數,先找自己區域性的 再找全域性
作用鏈:找函式宣告時的位置外的變數;
執行棧:存放執行上下文;最底層一定是go
function
f70(
) console.
log(f70)
;//fn
var f70 =
"adc"
; console.
log(f70)
;//adc
var f70 =
123;
console.
log(f70)
;//123
}f70()
;
執行上下文
1.分類 位置 全域性 函式 區域性 2.全域性執行上下文 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 w...
this執行上下文
this的指向為 誰呼叫當前this所在的函式,this就指向誰。也就是說,當前呼叫函式的那個物件自身就是this,就是當前的執行上下文。被滑鼠事件,鍵盤事件等觸發的函式 叫做事件處理函式,事件處理函式的this指向事件源 觸發事件的節點 事件處理函式第乙個引數是事件物件 備註 有名函式的this指...
執行上下文
js原理 原型鏈 執行上下文 事件迴圈 預備知識 1 棧 stack 棧是類似於陣列的一種資料結構。2物件引用 user1指向使用者物件 user1持有使用者物件的引用 var user1 var user2 user1 user2.name 張三 console.log user1.name,us...