前端面試寶典---數據類型

基本數據類型

對于基本類型在創建時無需使用 new 關鍵字
Bigint在實際開發不常用,如果對于精度要求高可以使用第三方庫,如decimal.js

基本數據類型介紹

  1. undefined:當變量被聲明但未賦值,或者函數沒有返回值時,就會呈現 undefined 狀態。
  2. null:null 代表一個空值,它是一個人為設定的空對象指針。
  3. number:該類型用于表示整數和浮點數。JavaScript 里沒有專門區分整數和浮點數的類型。
  4. string:字符串是由零個或多個字符組成的序列,可使用單引號、雙引號或者反引號來表示。
  5. symbol:這是 ES6 引入的新類型,symbol 是獨一無二且不可變的數據類型,常被用作對象屬性的鍵。
  6. BigInt:BigInt 是 ES2020 引入的一種新的基本數據類型,用于表示任意大的整數。在 JavaScript 中,Number 類型只能安全地表示 -(2^53 - 1) 到 2^53 - 1 之間的整數,超出這個范圍的整數運算會出現精度丟失問題,而 BigInt 就可以解決這個問題。

基本數據類型判別方法

typeof

console.log(typeof undefined); // 輸出: 'undefined'
console.log(typeof null); // 輸出: 'object',這是 JavaScript 的一個歷史遺留問題
console.log(typeof true); // 輸出: 'boolean'
console.log(typeof 123); // 輸出: 'number'
console.log(typeof 'hello'); // 輸出: 'string'
console.log(typeof Symbol('key')); // 輸出: 'symbol'
console.log(typeof 123n); // 輸出: 'bigint'

instanceof

instanceof 運算符用于檢測構造函數的 prototype 屬性是否出現在某個實例對象的原型鏈上。可以用來判斷值是否為 Boolean、Number、String 的包裝對象。

// 示例代碼
let boolObj = new Boolean(true);
let numObj = new Number(123);
let strObj = new String('hello');console.log(boolObj instanceof Boolean); // 輸出: true
console.log(numObj instanceof Number); // 輸出: true
console.log(strObj instanceof String); // 輸出: true

最重要: Object.prototype.toString.call()

  1. Object.prototype.toString 方法
    在 JavaScript 中,每個對象都繼承自 Object.prototype,Object.prototype 里有一個 toString 方法。該方法的原始用途是返回一個能反映對象類型的字符串。
    對于 Object 類型的對象,toString 方法會返回一個形如 [object Type] 的字符串,其中 Type 代表對象的具體類型。比如,Object 類型的對象返回 [object Object]。
  2. 不同對象對 toString 方法的重寫
    很多內置對象(像 Array、Date、Function 等)都對 toString 方法進行了重寫,以滿足自身的需求。
    Array 對象的 toString 方法會把數組元素轉換為字符串并用逗號連接起來。
    const arr = [1, 2, 3];
    console.log(arr.toString()); // 輸出: 1,2,3
    
    Date 對象的 toString 方法會返回一個表示日期和時間的字符串。
    const date = new Date();
    console.log(date.toString()); // 輸出類似: Tue Apr 09 2024 14:30:00 GMT+0800 (中國標準時間)
    
  3. 使用 call 方法改變 this 指向
    由于很多對象重寫了 toString 方法,所以若要調用 Object.prototype 上原始的 toString 方法,就需要借助 call 方法來改變 this 指向。
    call 方法能讓我們在調用函數時指定函數內部的 this 值。當使用 Object.prototype.toString.call(obj) 時,就把 Object.prototype.toString 方法里的 this 指向了 obj,這樣就能調用原始的 toString 方法,從而得到對象類型的詳細信息。
// 判斷 undefined
console.log(Object.prototype.toString.call(undefined)); // 輸出: [object Undefined]// 判斷 null
console.log(Object.prototype.toString.call(null)); // 輸出: [object Null]// 判斷布爾類型
console.log(Object.prototype.toString.call(true)); // 輸出: [object Boolean]// 判斷數字類型
console.log(Object.prototype.toString.call(123)); // 輸出: [object Number]// 判斷字符串類型
console.log(Object.prototype.toString.call('hello')); // 輸出: [object String]// 判斷 Symbol 類型
console.log(Object.prototype.toString.call(Symbol('key'))); // 輸出: [object Symbol]// 判斷 BigInt 類型
console.log(Object.prototype.toString.call(123n)); // 輸出: [object BigInt]// 判斷數組類型
const arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr)); // 輸出: [object Array]// 判斷日期類型
const date = new Date();
console.log(Object.prototype.toString.call(date)); // 輸出: [object Date]

引用數據類型

引用數據類型介紹

  1. Object:Object 是 JavaScript 中最基礎的引用數據類型,可用于存儲鍵值對,是其他對象的基礎,許多復雜的數據結構都基于它構建。
const person = {name: 'John',age: 30
};
  1. Array:Array 用于存儲有序的數據集合,元素可以是不同的數據類型,并且可以動態調整長度。
const numbers = [1, 2, 3, 4, 5];
  1. Function:Function 用于封裝可重復使用的代碼塊,可接受參數并返回值,還可以作為參數傳遞給其他函數,或者作為返回值返回。
function add(a, b) {return a + b;
}
  1. Date:Date 用于處理日期和時間,提供了一系列方法來獲取和設置日期、時間的各個部分。
const now = new Date();
  1. RegExp:RegExp 用于處理正則表達式,可用于字符串的匹配、替換、分割等操作。
const pattern = /abc/;

引用數據類型判別方法

最重要: Object.prototype.toString.call()

console.log(Object.prototype.toString.call({})); // 輸出: '[object Object]'
console.log(Object.prototype.toString.call([])); // 輸出: '[object Array]'
console.log(Object.prototype.toString.call(function() {})); // 輸出: '[object Function]'
console.log(Object.prototype.toString.call(new Date())); // 輸出: '[object Date]'
console.log(Object.prototype.toString.call(/abc/)); // 輸出: '[object RegExp]'

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

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

相關文章

Lua 函數使用的完整指南

在 Lua 中,函數是一等公民(First-Class Citizen),這意味著函數可以像其他值一樣被賦值、傳遞和操作。以下是 Lua 函數定義的完整指南,涵蓋基礎語法、高級特性、設計模式及性能優化。 在Lua 中,函數定義的完…

使用StockTV API對接印度金融市場數據全指南:K線、實時行情與IPO新股

一、印度金融市場數據特點 印度作為全球增長最快的主要經濟體之一,其金融市場具有以下顯著特征: 雙交易所體系:國家證券交易所(NSE)和孟買證券交易所(BSE)高流動性品種:Nifty 50指數成分股、銀行股等獨特交易機制:T2…

2021-10-26 C++繁忙通信兵

緣由繁忙的通訊兵,可以解決一下嗎-編程語言-CSDN問答 void 繁忙通信兵() {//緣由https://ask.csdn.net/questions/7544401?spm1005.2025.3001.5141int a 200, s1 8, s2 5, s3 45, p 0, n 0, c 0;std::cin >> n;while (a > n){a - s1 s2;if (a &l…

【Linux】進程控制:創建、終止、等待與替換全解析

文章目錄 前言一、重談進程創建二、進程終止2.1 正常終止的退出碼機制2.2 異常終止的信號機制2.3 進程常見的退出方法 三、進程等待:避免僵尸進程的關鍵3.1 進程等待的必要性3.2 進程等待的兩個系統調用接口3.2.1 wait()3.2.2 waitpid()區別 四、進程程序替換4.1 進…

基于Redis實現短信防轟炸的Java解決方案

基于Redis實現短信防轟炸的Java解決方案 前言 在當今互聯網應用中,短信驗證碼已成為身份驗證的重要手段。然而,這也帶來了"短信轟炸"的安全風險 - 惡意用戶利用程序自動化發送大量短信請求,導致用戶被騷擾和企業短信成本激增。本…

【后端開發】Spring MVC-常見使用、Cookie、Session

文章目錄 代碼總結初始化--RestController、RequestMapping傳遞參數單參數多參數 傳遞對象后端參數重命名(后端參數映射)--RequestParam必傳參數設置非必傳參數 傳遞數組傳遞集合傳遞JSON數據JSON語法JSON格式轉換JSON優點傳遞JSON對象 獲取URL中參數--P…

青少年編程考試 CCF GESP Python七級認證真題 2025年3月

Python 七級 2025 年 03 月 題號 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 B C A B B A A B C A B B A B A 1 單選題(每題 2 分,共 30 分) 第 1 題 下列哪個選項是python中的關鍵字? A. function B. class C. method D. object…

Vue 框架組件間通信方式

組件間通信方式 不管是 vue2 還是 vue3,組件通信方式很重要,以下是常見的幾種通信方式: props:可以實現父子組件、子父組件、甚至兄弟組件通信自定義事件:可以實現子父組件通信全局事件總線 $bus:可以實現…

SpringBoot學生成績管理系統設計與實現

概述 幽絡源本次分享的基于SpringBoot的學生成績管理系統項目,采用主流的Java技術棧開發,實現了從學生信息管理到成績統計分析的全流程數字化管理。 主要內容 管理員功能模塊 ??學生信息管理??:維護學生基本信息檔案,支持…

青少年編程與數學 02-016 Python數據結構與算法 01課題、算法

青少年編程與數學 02-016 Python數據結構與算法 01課題、算法 一、算法的定義二、算法的設計方法1. 分治法2. 動態規劃法3. 貪心算法4. 回溯法5. 迭代法6. 遞歸法7. 枚舉法8. 分支定界法 三、算法的描述方法1. **自然語言描述**2. **流程圖描述**3. **偽代碼描述**4. **程序設計…

Java 實現冒泡排序:[通俗易懂的排序算法系列之二]

引言 大家好!歡迎來到我的排序算法系列第二篇。今天,我們將學習另一種非常基礎且廣為人知的排序算法——冒泡排序 (Bubble Sort)。 冒泡排序的名字非常形象,它模擬了水中氣泡上升的過程:較小(或較大)的元素會像氣泡一樣,通過不斷交換,逐漸“浮”到數組的一端。 什么是…

struct結構體、union聯合體和枚舉

目錄 一、結構體的聲明和使用 1.1 結構體正常聲明和創建 1.2 結構體特殊聲明 1.3 結構體的自引用 二、結構體內存對齊 2.1 對齊規則 2.2 #pragma修改 三、結構體傳參 四、結構體位段 4.1 位段內存分配 4.2 位段內存應用 五、結構體中的柔性數組概念 六、union聯合…

大模型本地部署系列(2) Ollama部署DeepSeek-R1

成功運行截圖 部署步驟 我們進入到ollama的官網: Ollama?ollama.com/?編輯 找到上方的Models ,然后點擊 此時會跳轉到模型列表頁面: 點擊 deepseek-r1 鏈接進去,此時我們會看到下拉框中有各個版本的大模型,越往后…

繪制動態甘特圖(以流水車間調度為例)

import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np from matplotlib import cm# 中文字體配置(必須放在所有繪圖語句之前) plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] Fa…

PyTorch實現線性回歸的基礎寫法與封裝API寫法

目錄 1. 基礎寫法 1.1導包 2.2加載讀取數據 2.3原始數據可視化(畫圖顯示) 2.4線性回歸的(基礎)分解寫法 2.5定義訓練過程 2.PyTorch實現 線性回歸的封裝寫法(實際項目中的常用寫法) 2.1創建線性回歸模型 2.2定義損失函數 2.3定義優化器 2.4定義訓練過程 1…

python 常用的6個爬蟲第三方庫

Python中有非常多用于網絡數據采集的庫,功能非常強大,有的用于抓取網頁,有的用于解析網頁,這里介紹6個最常用的庫。 1. BeautifulSoup BeautifulSoup是最常用的Python網頁解析庫之一,可將 HTML 和 XML 文檔解析為樹形…

基于BP神經網絡的雜草智能識別系統(雜草識別、Python項目)

基于BP神經網絡的雜草智能識別系統 項目介紹 本項目是一個基于PyQt5和BP神經網絡的雜草智能識別系統。系統通過圖像處理和神經網絡技術, 能夠識別8種不同的雜草類別。用戶可以通過上傳圖片,系統會自動識別圖片中的雜草類別,并顯示識別結果和…

Python3筆記之號稱替代pip的uv包管理器

uv是什么? uv,這是一個由 Astral 團隊開發的極快速的Python包和項目管理工具,用Rust語言編寫。它集成了多種功能,旨在替代pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv等多個工具,提供更高效、更全面的Py…

IT管理思路

甲方CIO和IT管理者-如何做好組織級IT能力提升_嗶哩嗶哩_bilibili

ChatGPT的GPT-4o創建圖像Q版人物提示詞實例展示

最近感覺GPT-4o發布的新功能真的強大,所以總結了一些提示詞分享給大家,大家可以去試試,玩法多多,可以用GPT-4o生成圖片,然后用可靈進行圖生視頻,就能去發布視頻了!接下來和筆者一起來試試&#…