摘要:基本類型基本類型的比較就是值的比較訪問是訪問值本身不能定義方法和屬性保存在棧內存中引用類型除了基本類型外,就是引用類型了。
基本類型
1、number
2、string
3、boolean
4、symbol
5、undefined
6、null
基本類型的比較就是值的比較;訪問是訪問值本身;不能定義方法和屬性;保存在棧內存中
JavaScript除了基本類型外,就是引用類型了。如Array、Function、Object、Date等等。
引用類型可以定義屬性和方法;同時保存在棧內存和堆內存中;引用類型的比較是內存地址的比較。
為什么說引用類型同時保存在棧內存和堆內存中
let person = {name:"louis"} //person保存在棧內存中,person就是這個引用對象的指針,通過這枚指針尋找到堆內存的地址 //{name:"louis"} 保存在堆內存中
引用類型是如何比較的
let address = {details:"a"} let one = address let tow = address one === tow //true // 雖然one、tow是兩枚不同的指針,但它們都同時指向了堆內存里的address的內容,所以它們是相等的
再來一個例子
let person = {name:"louis} let man = {name:"louis"} person === man //false // person和man的內容明明相同,為什么又不相等是因為她們的內容雖然一樣,但是是在堆內存里開辟了兩個地方,所以它們指向的也是兩個不同的地方。可見,引用類型的比較是內存地址的比較函數參數是引用類型(對象)的時候會發生什么
還是一個例子
function test(person) { person.age = 26 person = { name: "aaa", age: 30 } return person } const p1 = { name: "bbb", age: 25 } const p2 = test(p1) p1 // {age:26,name:"bbb"} p2 // {age:30,name:"aaa"}
函數傳遞參數時,實際上是傳遞指針的副本。
test(p1)實際上傳遞的就是p1的副本,這時指針仍然指向{name: "bbb",age: 25}
person.age = 26 這時修改的還是原來內存位置的內容,所以這時p1的age變成了26
當person = {} .. 相當于重新開辟了一塊堆內存,賦值{name:"aaa",age:30},最后返回這個對象,而這個對象的指針就是p2
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105343.html
摘要:例子中,屬于基本類型對象。基本數據類型和引用類型作方法入參時的差異通常,在函數調用時,如果入參為基本數據類型時,函數的參數將以值傳遞的方式傳遞。 前言:再次翻閱JS高程(第3版)過程中,看到了基本包裝類型,趁熱留下此文,對JS的數據類型做個較為深入的小結(2018-10-19)。 雖然JS與其他強類型語言不一樣,聲明中無需預設數據類型,但是JS也是有數據類型區分的。 基本數據類型(...
摘要:這也解答了我曾經的一個疑問同樣的道理,在調用屬性的瞬間,也是使用先來實例化一個對象,所以那一瞬間他們的構造函數以及原型對象是相同的,但也僅僅是那一瞬間。 經常在國內的各大網站博客上看到一句話,叫做JS中萬物皆對象,那是否真是如此? 那么,我們先來捋一捋JS中的數據類型,JS中的數據類型有下面幾種 Undefined Null Boolean Number String Symbol ...
摘要:熟悉的同學都知道,它的數據類型一般分為基本數據類型和引用數據類型復雜數據類型。基本數據類型基本數據類型有種新增。動態的屬性基本數據類型的值是沒有辦法添加屬性和方法的。類型檢測根據它的原型鏈來識別引用類型。 熟悉js的同學都知道,它的數據類型一般分為基本數據類型和引用數據類型(復雜數據類型)。那么他們之間到底有什么不同?從下面這個例子入手: var a = 1; ...
摘要:也就是說基本類型在賦值操作后,兩個變量是相互不受影響的。前面講引用類型的時候提到,保存在變量中的是對象在堆內存中的地址,所以,與簡單賦值不同,這個值的副本實際上是一個指針,而這個指針指向存儲在堆內存的一個對象。 ECMAScirpt 變量有兩種不同的數據類型:基本類型,引用類型。也有其他的叫法,比如原始類型和對象類型,擁有方法的類型和不能擁有方法的類型,還可以分為可變類型和不可變類型,...
摘要:從入門到放棄基本類型和引用類型有七種數據類型而的變量根據指向數據類型的不同也分為兩種類型一種基本類型一種引用類型基本類型基本類型包括這五種但凡變量指向這五種數據類型的都稱之為基本類型假設有以上變量那么他們在內存中棧區的存儲結構大概是這樣子 JS從入門到放棄-基本類型和引用類型 JS有number,string,null,undefined,boolean,array,object七種數...
摘要:每當讀取這個基本類型時,后臺會創建一個對應的基本包裝類型的對象。類型判斷主要是用來判斷基本數據類型返回類型新增所以只能用來判斷基本數據類型。引用類型基本包裝類型都會返回。 最近重溫JS高程設計以及與朋友的討論。決定趁熱打鐵記錄JS的各種類型,并做下深入總結。 js的幾種類型 基本類型:Boolean、String、Number、Null、Undefined 引用類型: 2.1 O...
閱讀 1849·2023-04-26 01:58
閱讀 1981·2019-08-30 11:26
閱讀 2729·2019-08-29 12:51
閱讀 3494·2019-08-29 11:11
閱讀 1182·2019-08-26 11:54
閱讀 2095·2019-08-26 11:48
閱讀 3478·2019-08-26 10:23
閱讀 2384·2019-08-23 18:30