好久不見,甚是想念
今天你敲**了嗎!?今天我們來聊聊js 中 按值引用和按位址引用這個話題
先給出結論哦~
基本型別按值引用,物件型別按位址引用
let a =
;let b = a;
a.val =1;
// 此時 a → , b →
a =;
// 此時 a → {}, b →
1、在js中,以上**段中的a其實只是儲存了乙個記憶體中的位址,每次使用a的時候其實是通過位址去找到真正的{}
2、而將a賦值給b,其實就是將a儲存的位址複製給b乙份,然後呼叫b也會去找到和a相同位址的{}
a.val = 1就是將a位址指向的物件{}增加乙個值為1的屬性val
3、因為b儲存的位址也指向同乙個物件,所以看起來就像是b也在同步變化。其實b儲存的位址並沒有變化。
4、a = {}則將乙個新的{}的位址賦值給了a,此時覆蓋掉了原來儲存的物件的位址,然而b所儲存的位址仍然指向原來的
希望對你有所幫助
js函式傳參是按值傳遞還是按引用傳遞?
基本型別 引用型別 閒扯完了,開始寫今天要總結的基礎知識。基本型別 undefined null boolean number string五種 簡單的資料段 引用型別 object 由多個值構成 兩種型別在使用上的區別 複製變數 這塊好理解,看乙個例子的對比就秒懂 基本型別 var num1 5 ...
JS按值傳遞與按引用傳遞小結
js的基本型別,是按值傳遞的。var a 1 function foo x foo a console.log a 仍為1,未受x 2賦值所影響 再來看看物件的傳遞 var obj function foo o foo obj console.log obj.x 3,被修改了 var obj fun...
JavaScript 按值傳遞 按引用傳遞
1 值的比較 引用的比較 首先,原始值的比較是值的比較 只有在它們值相等的時候它們才相等 比如簡單的 var a1 10 var a2 10 console.log a1 a2 true 其次,物件的比較並非值的比較 物件的比較均是引用的比較,當且僅當它們引用同乙個基物件時,它們才相等。即使兩個物件...