變量、做用域、內存---part2

上回書說道,基本變量和引用變量在內存的概念上保存值得方式是不同的,他們不單單有這點不同,在從一個變量向另外一個變量賦值基本變量和引用變量的處理也是不同的,從一個變量向另外一個變量複製基本類型的值,會在變量上建立一個新值,而後把該值複製到新的變量位置上函數

在這段賦值的動做中a和b是兩個徹底獨立的值,二者除了賦值和被賦值以外沒有任何關係,換句話來講,你對a進行任何操做b不會有任何改變

當一個變量向另外一個變量複製引用類型的值得時候,一樣也會將存儲在變量對象中的值複製一份放到位新變量分配的空間中。不一樣的是, 這個值得副本其實是一個指針,而這個指針指向存儲在堆中的一個對象,若是你更改這個指針,另外一個對象也會有變化

我先創造了一個對象叫obj1

又創造了個變量叫obj2把obj1的值付給了obj2

咱們給obj1對象添加了一個屬性叫作name,值是Jerry

結果咱們發現obj1和obj2之中都有一個name屬性叫Jerry,形成這個問題的緣由上面說了,可是文字看上去不是很好理解,因此咱們來搞個圖片理解一下

js中全部的 函數的參數都是按值來傳遞的(廢話),簡單的傳參方式咱們以前的章節有所提到過。把函數體外部的值賦值給函數體內部就像把變量從一個賦值到另外一個同樣

外部的obj1傳遞到函數內部以後,函數吧obj1的屬性新增了一個name,外部的obj1也會多一個屬性叫作name
相關文章
相關標籤/搜索