JavaScript複習——01

来源:https://www.cnblogs.com/trueasureyuki/archive/2023/10/22/17780047.html
-Advertisement-
Play Games

這是我用於複習我一年前學習的JavaScript的筆記,由於一年過去了,我大概已經4~5個月沒有寫過什麼代碼,所以需要整理自己的知識體系,如果文章出錯,也希望大家評論給我改錯 JavaScript的類型 JS中的類型有以下幾種: Number(數字類型) BigInt (大數類型) String(字 ...


這是我用於複習我一年前學習的JavaScript的筆記,由於一年過去了,我大概已經4~5個月沒有寫過什麼代碼,所以需要整理自己的知識體系,如果文章出錯,也希望大家評論給我改錯

JavaScript的類型

JS中的類型有以下幾種:

  • Number(數字類型)
  • BigInt (大數類型)
  • String(字元串類型)
  • Boolean (布爾類型)
  • null (空值類型)
  • undefined(未定義類型)
  • Symbol (符號類型)

Number類型 與 BigInt 大數類型

JS中的數字並不是無限大的,當我們超過JS的範圍,就會顯示近似值
由於電腦底層保存的數據是通過二進位,所以JS在進行小數運算的時候,精確度也是存在一定的問題的,我們一般引入其它的東西幫助我們進行計算

Infinity是數字類型的一個字面量,表示特殊值無窮
NaN也是一個數字類型的字面量,表示非數字型

let a = 10;
a = 10.5;
a = 3.14;
console.log(a)

如果我們需要表示其它進位的數字的話,就按下麵的寫法

// 二進位
let a = 0b;
// 八進位
let b = 0o;
// 十六進位
let c = 0x;

BigInt大數

註意:

  1. 大數可以表示所有範圍的數值,前提是你的記憶體夠大
  2. 大整數只能和大整數的類型進行計算,不能和普通的數字類型進行計算
let a = 99999999999999999999999999999999999999n;

類型檢查

我們可以使用typeof來檢查我們值的類型

註意:

  1. 在JS中只有值才有類型,變數是沒有類型的(因為JS是弱類型的語言)
  2. typeof 返回的是一個字元串
  3. 變數只是一個存儲值的盒子
let a = 10;
let b = 20n;
// result Number
console.log(typeof a);
// result bigInt
console.log(typeof b);

字元串(String)

在JS中我們使用 單引號雙引號 來表示字元串

註意:

  1. 單引號和雙引號不能混用
  2. 普通字元串不能跨行,模板字元串可以

模板字元串

使用:

let a = `你好
呀!`;

// 模板字元串還可以嵌入變數
let name = '孫悟空';
let a = `你好${name}`;

布爾值(Boolean)

一般我們用作邏輯判斷
布爾值只有兩個 true 和 false
布爾值在底層本質上就是一個數字

let a = true;
let b = false;

空值(null)

空值用來表示空對象
空值只有一個null
註意:

  1. 使用typeof檢查空值會顯示object(使用 typeof 無法檢查空值)

未定義(Undefined)

當聲明變數未賦值的時候,它的值就是Undefined

為定義只有一個值undefined


符號(Symbol)

用於創建一個唯一的標識
使用 typeof 檢查的時會返回Symbol

let c = Symbol()
console.log(typeof c)

類型轉換

將一種數據類型轉換為另外一種數據類型,我們稱之為類型轉換
註意:
由於數據的值的類型不可變,所以我們的類型轉換其實是根據原來的值,在記憶體開闢一個新的空間存儲轉換完畢之後的值


image


轉換字元串

  1. 方法一:調用toString()方法
    註意:undefined 和 null 沒有 toString方法,所以不能調用這個方法
let a = 10;
// 調用 a 的toString方法
a = a.toString();
console.log(typeof a,a);

  1. 方法二:調用String()函數
    String()函數可以轉換 null 和 undefined

String()函數的原理:String()函數,本質上是對於可以調用toString()函數的對象,調用它們的toString(),而對於不能調用toString()的對象如 null 和 undefined 的它們會將其轉換為 "null" 和 "undefined"

let a = 10;
// 調用String()函數
a = String(a);
console.log(typeof a,a);

  1. 方法三:讓數據加上一個字元串(隱式類型轉換)
    其內部原理還是調用String()函數
let b = 123 + '';

轉換為數字

註意:

  1. 字元串:如果字元串是一個合法的數字,那麼就正常轉換,但是如果是不合法的數字,就會轉換為NaN
  2. 如果字元串是空串空格就會轉換為0
  3. 布爾值:true轉換為1,false轉換為0
  4. undefined:轉換為NaN
  5. null:轉換為0

  1. 方法一:使用Number()函數(適用於任何類型)
let a = '123';
console.log(typeof a);

a = Number(a);
console.log(typeof a);
  1. 方法二:parseInt() 和 parseFloat() 將一個字元串轉換為浮點數
    2.1. paserInt解析時,會從左往右解析字元串,直到讀取到字元串所有的有效整數
    2.2. 我們也可以使用 parseInt() 進行取整
let b = '1987px';
b = parseInt(b);
console.log(typeof b,b)
  1. 方法三:通過在非數值前面加一個+號,其本質還是調用Number()函數
let a = '132';
a = +a;

布爾值

方法:使用Boolean()函數將其它類型轉換為布爾值
轉換:

  1. 數字:處理NaN、0是false,其餘都是true
  2. 字元串:除了空串是false,其餘都是true
  3. null 和 undefined 轉換都是false
  4. 對象都會轉換為 true
  5. 使用!,對變數進行隱式轉換


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 什麼是虛擬線程 虛擬線程是JDK21版本正式發佈的一個新特性。虛擬線程和平臺線程主要區別在於,虛擬線程在運行周期內不依賴操作系統線程:它們與硬體脫鉤,因此被稱為“虛擬”。這種解耦是由JVM提供的抽象層賦予的。 虛擬線程的運行成本遠低於平臺線程。它們消耗的記憶體要少得多。這就是為什麼我們可以創建數 ...
  • 大家好,我是大彬~ 今天跟大家分享知識星球小伙伴關於【非科班轉碼如何補基礎】的提問。 往期星球提問整理: 讀博?找工作? 性格測試真的很重要 想找一份實習工作,需要準備什麼 球友提問: 大彬大佬,想問下非科班要補哪些基礎? 求推薦視頻,國內國外都行。 大彬的回答: 你好,我也是非科班轉碼的,Java ...
  • ARP (Address Resolution Protocol,地址解析協議),是一種用於將 `IP` 地址轉換為物理地址(`MAC地址`)的協議。它在 `TCP/IP` 協議棧中處於鏈路層,為了在區域網中能夠正確傳輸數據包而設計,由協議數據單元和對應的操作命令組成。`ARP` 既可以由操作系統處... ...
  • aspnetcore微服務之間通信grpc,一般服務對外介面用restful架構,HTTP請求,服務之間的通信grpc多走內網。 以前寫過一篇grpc和web前端之間的通訊,代碼如下: exercisebook/grpc/grpc-web at main · liuzhixin405/exercis ...
  • 正則表達式是一種用來匹配字元串的規則。每個字元在正則表達式中都有其特定的含義,下麵是一些常見的字元及其含義: 1. ^:匹配字元串的開頭位置。 2. $:匹配字元串的結尾位置。 3. .:匹配任意單個字元。 4. *:匹配0個或多個前面的字元。 5. +:匹配1個或多個前面的字元。 6. ?:匹配0 ...
  • 在我們開發的前端項目中,往往為了方便,都需對一些控制項進行自定義的處理,以便實現快速的數據綁定以及便捷的使用,本篇隨筆介紹通過抽取常見字典列表,實現通用的字典類型綁定;以及通過自定義控制項的屬性處理,實現系統字典內容的快捷綁定的操作。 ...
  • 安裝Ubuntu Linux元信息 兩台機器,每台機器兩台Ubuntu Ubuntu版本:ubuntu-22.04.3-desktop-amd64.iso 處理器數量2,每個處理器的核心數量2,總處理器核心數量4 單個虛擬機記憶體8192MB(8G),最大磁碟大小30G 參考鏈接 清華大學開源軟體鏡像 ...
  • 公司有一個新需求,在原來項目基礎上開發,項目中使用 Ant Design Vue,版本是 1.X ,在此記錄下遇到的問題;對於沒有使用過或者使用程度不深的同學來說,希望可以幫助你在開發中遇到問題時有個參考。對於已經熟練使用的同學,可能這些問題都遇到過,歡迎大家在評論區補充。 1、實現對下拉框顯示的所 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...