JS值和引用

在javaScript中,數據類型整體上可以分為兩大類:基本數據類型和引用數據類型

基本數據類型:

string , symbol , number , boolean , undefined , null

引用數據類型:

object

1.簡單值(原始值)

? ? ? ? 由于簡單值的數據大小是固定的,所以簡單值的數據是存儲于內存中的棧區里面的

? ? ? ? 這里面null比較特殊,打印出來是object,這是由于歷史原因所遺留下來的問題

? ? ? ? 具體原因是因為不同的對象在底層都表現為二進制,在JavaScript中二進制前三位都為0的話就會被判斷為object類型,null的二進制全部為0,自然前三位也是0,所以執行typeof值會返回object

? ? ? ? 例外,當我們打印 null == undefined 的時候,返回的是true

? ? ? ? 這兩個值都表示“無”的意思

????????通常情況下,當我們試圖訪問某個不存在的或者沒有賦值的變量時,就會得到一個undefined值,JavaScript會自動將聲明是沒有進行初始化的變量設為undefined

? ? ? ? 區分

? ? ? ? ? ? ? ? null是一個表示“無”的對象(空對象指針) , 轉為數值時為0

? ? ? ? ? ? ? ? 典型用法是:

? ? ? ? ? ? ? ? ? ? ? ? 作為函數的參數,表示該函數的參數不是對象

? ? ? ? ? ? ? ? ? ? ? ? 作為對象原型鏈的終點

? ? ? ? ? ? ? ? undefined是一個表示“無”的原始值,轉為數值時為NaN

? ? ? ? ? ? ? ? 典型用法是:

? ? ? ? ? ? ? ? ? ? ? ? 變量被聲明了,但沒有賦值時,就等于undefined

? ? ? ? ? ? ? ? ? ? ? ? 調用函數時,應該提供的參數沒有提供,該參數就等于undefined

? ? ? ? ? ? ? ? ? ? ? ? 對象沒有賦值的屬性,該屬性的值為undefined

? ? ? ? ? ? ? ? ? ? ? ? 函數沒有返回值時,默認返回undefined

2.復雜值

? ? ? ? 數組,對象 。。。

3.訪問方式

? ? ? ? 1.按值訪問

? ? ? ? ? ? ? ? 簡單值是作為不可細化的值進行存儲和使用的,引用它們會轉移其值

? ? ? ? 2.引用訪問

? ? ? ? ? ? ? ? 復雜值是通過引用進行存儲和操作的,而不是實際的值,創建一個包含復雜對象的變量時,其值是內存中的一個引用地址。引用一個復雜對象時,使用它的名稱(即變量或對象屬性)通過內存中的引用地址獲取該對象值

4.比較方式

? ? ? ? 簡單值采用值比較,而復雜值采用引用比較,復雜值只有在引用相同的對象(即有相同的地址)時才相等,即使是包含相同對象的兩個變量也彼此不相等,因為它們并不指向同一個對象

var a = 10
var b = 10
console.log(a === b) // truevar a = [1,2,3]
var b = [1,2,3]
console.log(a === b) // false

5.動態屬性

? ? ? ? 對于復雜值,可以為其添加屬性和方法,也可以改變和刪除其屬性和方法,但簡單值不可以

6.變量賦值

? ? ? ? 直接賦值

? ? ? ? ? ? ? ? 將簡單值賦值給變量

? ? ? ? 引用賦值

? ? ? ? ? ? ? ? 將一個復雜值的引用賦值給變量,這個引用指向堆區實際存在的數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715887.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715887.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

職業生涯知識回顧-關于抽象類和接口的思考

抽象類和接口是兩個很容易產生疑惑的概念,分不清它們的使用場景,其實只要記住兩點就比較好理解: 接口是對行為的抽象抽象類是對子類有哪些屬性和行為的抽象 當你需要對一個類有哪些行為進行約束時,使用接口;需要為其…

Bulingbuling - 《歷史的教訓》 [ The Lessons of History ]

《歷史的教訓》 兩位當代最偉大思想家的著名論文集,匯集了 5000 多年的歷史 作者:威爾-杜蘭特和阿里爾-杜蘭特 The Lessons of History The celebrated collection of essays compiling over 5,000 years of history by two of the greatest thinkers …

Spring Boot項目中不使用@RequestMapping相關注解,如何動態發布自定義URL路徑

一、前言 在Spring Boot項目開發過程中,對于接口API發布URL訪問路徑,一般都是在類上標識RestController或者Controller注解,然后在方法上標識RequestMapping相關注解,比如:PostMapping、GetMapping注解,通…

Siamrpn++論文中文翻譯(詳細!)

SiamRPN: Evolution of Siamese Visual Tracking with Very Deep Networks SiamRPN:具有非常深度網絡的Siamese視覺跟蹤的進化 【siamrpn論文地址】 https://arxiv.org/abs/1812.11703 摘要 基于Siamese網絡的跟蹤器將跟蹤表示為目標模板和搜索區域之間的卷積特征…

【STA】多場景時序檢查學習記錄

單周期路徑 建立時間時序檢查 在時鐘的有效沿到達觸發器之前,數據應在一定時間內保持穩定,這段時間即觸發器的建立 時間。滿足建立時間要求將確保數據可靠地被捕獲到觸發器中。 建立時間檢查是從發起觸發器中時鐘的第一個有效沿到捕獲觸發器中時鐘后面…

理解大模型的5個關鍵公式

理解大模型的5個關鍵公式_嗶哩嗶哩_bilibili PPT:https://link.excalidraw.com/p/readonly/aBWlNjEckdUlrszwwo6V

基于springboot+vue的社區醫院管理系統

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

chatgpt-3的文章生成器有哪些?可以批量生成文章的生成器

GPT-3(Generative Pre-trained Transformer 3)作為人工智能領域的一項重大突破,開啟了新一代的文本生成技術。同時市面上也涌現出了一些GPT-3文章生成器,為用戶提供了快速、高效地生成各種類型文章的工具。本文將介紹一些中國的GP…

unity-unity2d基礎操作筆記(三)0.5.000

目標是:牢記以下137條操作,越級上升到中級階段 unity-unity2d基礎操作筆記(三) 一百零一、如何操作一個游戲物體由多個部分組成的動畫一百零二、如何使用rigidbody 2d進行物體移動一百零三、獲取游戲物體身上的組件方法一百零四、代碼控制物體朝向一百零五、不使用插件,純…

C#上位機調試經驗

1.使用Visual Studio的遠程工具 因為上位機軟件安裝在工控機上,不方便調試。如果直接把代碼放在工控機上,又不太安全。 可以在工控機上安裝一個Visual Studio的遠程工具,把隨身帶的筆記本電腦通過網線插在工控機上 這樣可以在筆記本上使用…

s3cmd工具使用

1. 安裝s3cmd工具 [roottestserver01 ~]# yum install s3cmd 2. 配置s3cmd, 按提示輸入相應的ak,sk,endpoint等信息 [roottestserver01 ~]# s3cmd --configure 3. s3cmd使用 [roottestserver01 ~]# s3cmd mb s3://abc (創建一個桶&am…

python筆記_程序流程控制

A,順序控制 程序從上到下逐行執行 python定義變量時,會合法地向前引用 age 1 age2 age 1 age2 age 1 age 1 ——>錯誤,age應在age2之前 B,分支控制 1,單分支if 語法 if 條件表達式 : 代碼塊 說明…

【六】【SQL】多表查詢,笛卡爾積

笛卡爾積 笛卡爾積發生在當你在查詢中將兩個或多個表進行交叉連接(CROSS JOIN)或者沒有指定任何連接條件時。假設第一個表有M行,第二個表有N行,那么結果集將包含M x N個記錄。在大多數情況下,笛卡爾積并不是你想要的結…

數字化轉型導師堅鵬:證券公司數字化思維升級之道

證券公司數字化思維升級之道 ——數字化思維之六脈神劍 課程背景: 很多證券公司存在以下問題: 不知道數字化轉型如何改變思維模式? 不清楚需要建立什么樣的數字化思維? 不知道如何開展數字化思維提升工作? 課…

Redis之十:Spring Data Redis --- CrudRepository方式

SpringData Redis CrudRepository方式 Spring Data Redis 的 CrudRepository 是 Spring Data 框架中用于提供基礎 CRUD(創建、讀取、更新和刪除)操作的一個接口。在與 Redis 集成時,盡管 Redis 是一個鍵值存儲系統,并沒有像關系型…

華為機試真題實戰應用【算法代碼篇】-去除多余空格(附Java、C++和python代碼)

目錄 問題描述 輸入描述 輸出描述 樣例 思路解析 代碼實現

關于福彩歷史數據采集器和體彩歷史數據采集器的下載安裝說明

前段時間因為研究基于人工神經網絡(深度學習,所謂的“AI”算法)對3D開獎數據進行預測,開發了兩款瀏覽器插件----“福彩歷史數據采集器”和“體彩歷史數據采集器”。之所以開發這兩款插件,是因為不管是基于什么樣的方式…

Unity 游戲設計模式:觀察者模式

本文由 簡悅 SimpRead 轉碼, 原文地址 mp.weixin.qq.com 在 unity 游戲設計中,觀察者模式(Observer Pattern)有著重要的作用,它主要用于實現對象之間的一對多的依賴關系,當一個對象的狀態發生變化時&#x…

【QT+QGIS跨平臺編譯】之六十三:【QGIS_CORE跨平臺編譯】—【錯誤處理:未定義的類QgsMapLayer - QgsMapLayerModel】

文章目錄 一、未定義的類QgsMapLayer二、解決辦法 一、未定義的類QgsMapLayer 報錯&#xff1a; 二、解決辦法 QgsMapLayerModel.h文件中 ①第27行修改為&#xff1a; #include "QgsMapLayer.h" ②第23行增加&#xff1a; #include <QPointer>

Github 2024-03-03 開源項目日報Top9

根據Github Trendings的統計&#xff0c;今日(2024-03-03統計)共有9個項目上榜。根據開發語言中項目的數量&#xff0c;匯總情況如下&#xff1a; 開發語言項目數量非開發語言項目4Rust項目1C項目1Jupyter Notebook項目1Python項目1Shell項目1 任天堂Switch模擬器yuzu&#x…