目錄
基本型別與參考型別
總結
聲明變數時不同的記憶體分配: 
不同的記憶體分配機制也帶來了不同的存取機制
複製變數時的不同
參數傳遞的不同(把實參複製給形參的過程) 
首頁 web前端 js教程 關於js中基本資料型別、引用資料型別區別

關於js中基本資料型別、引用資料型別區別

Oct 24, 2017 am 09:20 AM
javascript 引用 類型

堆疊(stack)和堆疊(heap)
  stack為自動分配的內存空間,它由系統自動釋放;而heap則是動態分配的內存,大小不定也不會自動釋放。 

基本型別與參考型別

基本型別:存放在堆疊記憶體中的簡單資料段,資料大小決定,記憶體空間大小可以分配。

基本資料類型有Undefined、Null、Boolean、Number 和String,他們的值是直接存放在堆疊中;

引用類型:存放在堆記憶體中的物件的值,由位址指標與值組成,位址保存在堆疊中,實際的值保存在堆中,堆中的每個空間大小不一樣,根據情況進行特定的分配。當我們需要存取參考型別(如對象,數組,函數等)的值時,首先從棧中獲得該對象的地址指針,然後再從堆內存中取得所需的數據; 


 var s='str',t= 0,floatNum=1.1;
    var obj={
        a:10,
        b:'Joel',
        c:function(){
            console.log('function');
        }
    }
登入後複製

 js 基本数据类型引用数据类型内存分配

如上圖所示:

基本資料類型值是保存在堆疊中,引用類型的物件參考是保存在堆疊中,值是保存在堆中;

總結

聲明變數時不同的記憶體分配: 

基本類型:儲存在堆疊(stack)中的簡單資料段,它們的值直接儲存在變數存取的位置。這是因為基本類型佔據的空間是固定的,所以可將他們儲存在較小的記憶體區域 – 堆疊中,這樣儲存便於迅速查詢變數的值。

引用類型:儲存在堆疊(heap)中的對象,儲存在堆疊中的值是一個指針(point)用於指向儲存對象的記憶體位址,這是因為引用類型值的大小會改變,所以不能把它放在堆疊中,否則會降低變數查尋的速度。相反存在堆疊中的值是該物件位址而位址的大小是固定的,所以把它儲存在堆疊中對變數效能無任何影響。

不同的記憶體分配機制也帶來了不同的存取機制

在javascript中是不允許直接存取保存在堆記憶體中的物件的,所以在存取一個物件時,首先訪問記憶體堆疊得到這個物件在記憶體堆中的位址,然後再按照這個位址去獲得這個物件中的值,這就是傳說中的按引用訪問,而基本型別的值則是直接記憶體棧中。

複製變數時的不同

基本類型:在將一個保存著原始值的變數複製給另一個變數時,會將原始值的副本賦值給新變量,此後這兩個變數是完全獨立的,他們只是擁有相同的value而已。

引用類型:在將一個保存著物件記憶體位址的變數複製給另一個變數時,會把這個記憶體位址賦值給新變量,也就是說這兩個變數都指向了堆記憶體中的同一個對象,他們中任何一個人所做的改變都會反映在另一個身上。 (這裡要理解的一點就是,複製對象時並不會在堆內存中新生成一個一模一樣的對象,只是多了一個保存指向這個對象指針的變量)多了一個指針。

參數傳遞的不同(把實參複製給形參的過程) 

ECMAScript中所有函數的參數都是按值來傳遞的,但是為什麼涉及到原始類型與引用類型的值時仍然有差別呢?還不就是因為記憶體分配時的差別。  
基本資料型態:只是把變數裡的值複製一個副本然後傳遞給參數,之後參數和這個變數互不影響。
引用型別:因為它傳遞的值是記憶體位址,所以都是指向同一個物件;

以上是關於js中基本資料型別、引用資料型別區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

視訊矩陣帳號怎麼做?它的矩陣帳號都有哪些類型呢? 視訊矩陣帳號怎麼做?它的矩陣帳號都有哪些類型呢? Mar 21, 2024 pm 04:57 PM

隨著短影片平台的盛行,影片矩陣帳號行銷已成為一種新興行銷方式。透過在不同平台上建立和管理多個帳號,企業和個人能夠實現品牌推廣、粉絲成長和產品銷售等目標。本文將為您探討如何有效運用視訊矩陣帳號,並介紹不同類型的視訊矩陣帳號。一、視訊矩陣帳號怎麼做?要做好視訊矩陣帳號,需要遵循以下幾個步驟:首先要明確你的影片矩陣帳號的目標是什麼,是為了品牌傳播、粉絲成長還是產品銷售。明確目標有助於制定相應的策略。 2.選擇平台:根據你的目標受眾,選擇合適的短影片平台。目前主流的短視頻平台有抖音、快手、火山小影片等。

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

C++ 函式回傳參考型別有什麼好處? C++ 函式回傳參考型別有什麼好處? Apr 20, 2024 pm 09:12 PM

C++中的函數傳回參考類型的好處包括:效能提升:引用傳遞避免了物件複製,從而節省了記憶體和時間。直接修改:呼叫方可以直接修改傳回的參考對象,而無需重新賦值。程式碼簡潔:引用傳遞簡化了程式碼,無需額外的賦值操作。

如何使用 C++ 引用和指標傳參? 如何使用 C++ 引用和指標傳參? Apr 12, 2024 pm 10:21 PM

C++中引用和指標都是傳遞函式參數的方法,但有差別。引用是變數的別名,修改引用會修改原始變量,而指標儲存變數的位址,修改指標值不會修改原始變數。在選擇使用引用還是指標時,需要考慮是否需要修改原始變數、是否需要傳遞空值和效能考量等因素。

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務

See all articles