JS 簡單與複雜型別傳參

2021-10-09 07:42:59 字數 695 閱讀 1548

​ 函式的形參也可以看做是乙個變數,當把乙個值型別變數作為引數傳給函式的形參時,其實是把變數在棧空間裡的值複製了乙份給形參,那麼在方法內部對形參做任何修改,都不會影響到的外部變數。

function fn(a) 

var x = 10;

fn(x);

console.log(x);

​ 執行結果如下:

​ 函式的形參也可以看做是乙個變數,當我們把引用型別變數傳給形參時,其實是把變數在棧空間裡儲存的堆位址複製給了形參,形參和實參其實儲存的是同乙個堆位址,所以操作的是同乙個物件。

function person(name) 

function f1(x)

var p = new person("劉德華");

console.log(p.name); // 1. 這個輸出什麼 ?

f1(p);

console.log(p.name); // 4. 這個輸出什麼 ?

​ 執行結果如下:

JS中簡單資料型別與複雜型別

簡單資料型別 null 返回的是乙個空的物件 object var timer null console.log typeof timer 如果有個變數我們以後打算儲存為物件,暫時沒想好放啥,這個時候就給 null 棧 棧的特點是先進後出的 我們可把棧看成乙個桶先進來的壓在桶的最下方 後進來的在桶的...

031 簡單型別和複雜型別

原始資料型別 number,string,boolean,undefined,null,object 基本型別 簡單型別 值型別 number,string,boolean 複雜型別 引用型別 object 空型別 undefined,null 值型別的值在哪一塊空間中儲存?棧中儲存 引用型別的值在...

JS 複雜型別的深拷貝與淺拷貝

淺拷貝 淺拷貝就相當於複製複雜型別的乙個指標 引用 當修改這個物件時,另外乙個物件也會跟著改變。例如 let a b a 此時修改a的屬性時,b也會隨之改變。let obj let obj2 obj 深拷貝 深拷貝就是把這個物件完完全全的拷貝過來,他們之間再也沒有任何關係。此時在修改這個物件,完全不...