亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Javascript中的基本類型和引用類型概述說明

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

簡單概述

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

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

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

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

詳細(xì)說明

值的可變性

基本類型(以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

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

存儲

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

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

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

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

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

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

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

訪問/比較

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

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

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

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

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

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

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

相關(guān)文章

最新評論