1. 程式人生 > >基本類型和引用類型的值

基本類型和引用類型的值

var 堆內存 影響 執行 包含 一份 object cti 改變

1.基本類型是按值訪問的,因為可以操作其中實際的值,而引用類型指的是可能包含多個值的對象

對於引用類型創建時,我們可以為它定義方法或者屬性,

比如

var person = new Object();

person.name = ‘bob‘;

alert(person.name)

而對於基本數據類型,這樣書寫返回undefined ,不會報錯

2.復制基本類型值和引用類型的值時的區別

1>

  var a = 1;

  var b = a;

  此處將基本類型a的值賦給b,相當於創建了另一塊內存空間,兩者相互獨立,互不影響

2>復制引用類型時

  var obj = new Object();

  var obj1 = obj;

  obj.name = ‘bob‘;

  alert(obj1.name) // ‘bob‘

  引用類型復制時,同樣將變量對象中的值復制一份到新變量的內存空間中,但新變量是一個指針,指針指向堆內存中一個對象,復制完成後,與原變量指向同一個對象,因而,改變會相互影響。

3>函數中參數傳遞 (通過值傳遞)

都是通過值傳遞,當參數為對象時,不太好理解。

例如: function setName(obj) {

      obj.name = ‘bob‘;

obj = new Object();

obj.name = ‘alice‘;

}

var person = new Object();

setName(person);

alert(person.name) // ‘bob‘

此處輸出bob而非alice 說明參數為值傳遞,因為一旦完成復制後,兩者便相互獨立了,函數中新定義的對象沒有影響到person ,實際上此處定義的為函數的局部對象,這個對象會在函數執行後立即被銷毀

基本類型和引用類型的值