摘要:兩種類型基本類型值引用類型值基本類型值指的是保存在棧內存中的簡單數據段引用類型值指的是那些保存在堆內存中的對象,意思是,變量中保存的實際上只是一個指針,這個指針執行內存中的另一個位置,由該位置保存對象兩種訪問方式基本類型值按值訪問,操作的是
兩種類型:基本類型值、引用類型值
基本類型值:指的是保存在棧內存中的簡單數據段;
引用類型值:指的是那些保存在堆內存中的對象,意思是,變量中保存的實際上只是一個指針,這個指針執行內存中的另一個位置,由該位置保存對象;
基本類型值:按值訪問,操作的是他們實際保存的值;
引用類型值:按引用訪問,當查詢時,我們需要先從棧中讀取內存地址,然后再順藤摸瓜地找到保存在堆內存中的值;引用類型的值保存在內存中,由于js不允許直接訪問內存,在操作的時候,其實操作的是對象的引用
基本類型:undefined、null、Boolean、String、Number
引用類型:Function、Object、Array
基本類型變量的復制:從一個變量向另一個變量復制時,會在棧中創建一個新值,然后把值復制到為新變量分配的位置上;
引用類型變量的復制:復制的是存儲在棧的指針,將指針復制到為新變量分配的位置上,而這個指針副本與原指針執行的是存儲在堆中的對象。復制結束后,兩個變量指向的是同一個對象,因此操作其中的任何一個將會影響另一個;
兩種變量類型檢測typeof操作符是檢測基本類型的最佳工具
如果變量值是null或者對象,返回的是object
typeof null // "object" typeof undefined // "undefined" typeof 1 // "number" typeof "1" // "string" typeof true // "boolean" typeof {} // "object" typeof [] // "object" typeof function() {} // "function"
instanceof操作符用于檢測引用類型,可以檢測它到底是什么類型的實例
如果變量是給定引用類型的實例,instanceof將會返回true
console.log(objects instanceof Object) // objects是否是Object的實例 console.log(arrays instanceof Array) // arrays是否是Array的實例兩種變量類型傳遞(值傳遞、引用類型傳遞)
通過以下兩個例子解釋值傳遞與引用類型傳遞:
var a = 1; function add(b) { b += 1; } add(a); console.log(a); // a == 1,a的值沒有發生變化
值傳遞的特性:
1.只將值進行傳遞,與原變量無關,值會被復制一份,保存在內存中另一個不同的位置;
2.當我們修改傳遞后的值時,修改的是內存中新的位置,而原變量不會被影響,還是原來的值;
3.這種情況往往出現在基本類型變量中;
var a = [1]; function add(b) { b.push(2); } add(a); console.log(a); // [1,2] 說明原始的a的值已經被改變了
引用傳遞的特性:
1.將內存地址進行傳遞,相當于把原變量完整的傳遞過來;
2.當我們修改傳遞后的值時,修改的是內存中原來的位置,會對原變量造成影響;
3.這種情況往往出現在對象中;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81686.html
摘要:一棧數據結構與不同,中并沒有嚴格意義上區分棧內存與堆內存。引用數據類型的值是保存在堆內存中的對象。不允許直接訪問堆內存中的位置,因此我們不能直接操作對象的堆內存空間。為了更好的搞懂變量對象與堆內存,我們可以結合以下例子與圖解進行理解。 showImg(https://segmentfault.com/img/remote/1460000009784102?w=1240&h=683); ...
摘要:前綴規范每個局部變量都需要有一個類型前綴,按照類型可以分為表示字符串。例如,表示以上未涉及到的其他對象,例如,表示全局變量,例如,是一種區分大小寫的語言。布爾值與字符串相加將布爾值強制轉換為字符串。 基本概念 javascript是一門解釋型的語言,瀏覽器充當解釋器。js執行時,在同一個作用域內是先解釋再執行。解釋的時候會編譯function和var這兩個關鍵詞定義的變量,編譯完成后從...
摘要:但對于引用類型的數據主要是對象和數組,變量指向的內存地址,保存的只是一個引用地址指針,只能保證這個引用地址指針是固定的,至于它指向的堆內存中的存儲的值是不是可變的,就完全不能控制了。 基礎概念 變量是存儲信息的容器,這里需要區分一下:變量不是指存儲的信息本身,而是指這個用于存儲信息的容器,可以把變量想象成一個個用來裝東西的紙箱子 變量需要聲明,并且建議在聲明的同時進行初始化,如下所...
摘要:語句中的塊語句對來說,將會指定對象添加到作用域鏈中。在嚴格模式下,初始化未經聲明的變量會導致錯誤。查詢標識符搜索過程從作用域鏈的前端開始,向上逐級查詢與給定名字匹配的標識符。 本文記錄了我在學習前端上的筆記,方便以后的復習和鞏固。 4.1基本類型和引用類型的值 ECMAScript變量可能包含兩種不同數據類型的值:基本類型值和引用類型值。基本類型指的是簡單的數據段,而引用類型值指那些可...
閱讀 1078·2021-11-25 09:43
閱讀 699·2021-11-22 14:45
閱讀 3825·2021-09-30 09:48
閱讀 1065·2021-08-31 09:41
閱讀 1976·2019-08-30 13:52
閱讀 1981·2019-08-30 11:24
閱讀 1350·2019-08-30 11:07
閱讀 956·2019-08-29 12:15