函式的形參也可以看做是乙個變數,當把乙個值型別變數作為引數傳給函式的形參時,其實是把變數在棧空間裡的值複製了乙份給形參,那麼在方法內部對形參做任何修改,都不會影響到的外部變數。
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 深拷貝 深拷貝就是把這個物件完完全全的拷貝過來,他們之間再也沒有任何關係。此時在修改這個物件,完全不...