欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript中的基本類型和引用類型概述說(shuō)明

 更新時(shí)間:2022年11月30日 09:42:49   作者:@樂(lè)知者@  
這篇文章主要介紹了Javascript中的基本類型和引用類型的相關(guān)資料,包括基本類型和引用類型的概念及區(qū)別,數(shù)據(jù)類型檢測(cè)給大家詳細(xì)介紹了js基本類型和引用類型,非常不錯(cuò),需要的朋友可以參考下

簡(jiǎn)單概述

js變量可以劃分為兩種不同的數(shù)據(jù)類型:

  • 基本類型:undefined、null、Boolean、Number、String、Symbol(ES6)
  • 引用類型:除基本類型以外,也可以理解為對(duì)象,如:Object、Array、RegExp、Date、Function等

類型的區(qū)別在于:

基本類型引用類型
可變性不可變可變
存儲(chǔ)區(qū)棧區(qū)棧區(qū)和堆區(qū)
訪問(wèn)按值訪問(wèn)按引用訪問(wèn)
兩者比較值的比較引用的比較

詳細(xì)說(shuō)明

值的可變性

基本類型(以string類型為例):

let person = '小明';
person.age = 18;
console.log(person.age);  // undefined

引用類型值(原始值)可添加屬性和方法:

let person = { name: '小落子' };
person.age = 18;
person.addAge = function() {
    person.age2 = person.age + 1;
}
person.addAge();
console.log(person.age, person.age2);  // 18 19

這樣就說(shuō)明了,基本類型的值是不可變的,而引用類型的值是可變的

存儲(chǔ)

基本類型存儲(chǔ)結(jié)構(gòu):

棧區(qū)棧區(qū)
name小紅
age18

基本類型的變量存放在棧區(qū)(棧區(qū)指內(nèi)存里的棧內(nèi)存,stack)

棧區(qū)保存了變量的標(biāo)識(shí)和變量的值

引用類型存儲(chǔ)結(jié)構(gòu):

引用類型的存儲(chǔ)需要內(nèi)存的棧區(qū)和堆區(qū)共同完成(堆區(qū)指內(nèi)存里的堆內(nèi)存,heap)

棧區(qū)保存了變量的標(biāo)識(shí)符和指向堆內(nèi)存中該對(duì)象的指針(該對(duì)象在堆內(nèi)存的地址),堆區(qū)保存了實(shí)際的對(duì)象

訪問(wèn)/比較

// 基本類型,以string為例
let a = '[]', b = '[]';
console.log(a === b);  // true
// 引用類型
let c = [], d = [];
console.log(c === d);  // false

基本類型的訪問(wèn)是按值訪問(wèn)的;引用類型是按**引用(地址)**訪問(wèn)的

基本類型比較的是值,所以相同,就為 true;引用類型比較是兩個(gè)對(duì)象堆內(nèi)存地址是否相同,雖然變量c和變量d都是一個(gè)空數(shù)組,但是它們的堆內(nèi)存地址不是一樣的,地址指向的不是同一個(gè)數(shù)組對(duì)象,所以不相等。

經(jīng)常遇到的問(wèn)題

關(guān)于基本類型和引用類型,不管是面試中,還是平常使用中,經(jīng)常遇到的問(wèn)題便是克?。◤?fù)制),這里又引出另一個(gè)概念(深克隆和淺克隆,對(duì)于基本類型是沒(méi)什么影響的)

  • 淺克?。簭?fù)制引用類型時(shí),不僅復(fù)制,而且還把內(nèi)存地址也復(fù)制了一遍;修改其中一個(gè),另一個(gè)會(huì)跟著變化
  • 深克隆:復(fù)制,內(nèi)存地址不同;修改其中一個(gè),另一個(gè)不會(huì)相應(yīng)的改變

到此這篇關(guān)于Javascript中的基本類型和引用類型概述說(shuō)明的文章就介紹到這了,更多相關(guān)JS基本類型與引用類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論