任務19 時間對象、引用類型-簡答題

1.基礎類型有哪些?復雜類型有哪些?有什么特征?

-基本類型值:指的是保存在棧內存中的簡單數據段,有數值、布爾值、null、undefined.

  var a=1;
  var b=a;
  var a=2;
  console.log(a)//2
  console.log(b)//1
  • 復雜類型值:指的是那些保存在堆內存中的對象,變量中保存的實際上只是一個指針,這個指針執行內存中的另一個位置,由該位置保存對象,有對象、數值、函數、正則

    var obj1={name:"hunger"};
    var obj2=obj1;
    obj1.name="mary";
    console.log(obj1);//{name:"mary"}
    console.log(obj2);//{name:"mary"},obj2也發生了變化
    
  • 由于存儲數據的位置不同,也導致二者有不同的特征,這就必須了解堆和棧的區別,堆適用于存儲對象實例,和類信息的,其中的數據可以為多線程共享,里面的數據存在時間視對象與類的存在時間而定,棧是方法執行區,里面存儲的是局部變量和方法運行時棧幀,里面的數據是私有的,不共享的,且隨著方法的結束而銷毀。

1.png

2.如下代碼的輸出? 為什么?

    var obj1 = {a:1, b:2};
    var obj2 = {a:1, b:2};
    console.log(obj1 == obj2);//輸出false,因為obj1和obj2雖然值一樣,但是兩個不同的對象,指針的地址不一樣
    console.log(obj1 = obj2);//此時把obj2的值和地址賦值給為obj1,此時對象obj1和obj2共享一個指針地址
    console.log(obj1 == obj2);//輸出true,因為二者的指針地址相同,指向一個共同的儲存堆區。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容