博客 / 詳情

返回

JavaScript 中 getItem 方法詳解

JavaScript 中 getItem 方法詳解

你想了解的 JavaScript 中的 getItem 方法,核心是用於從瀏覽器的存儲對象中讀取指定鍵(key)對應的存儲值(value),最常用在 Web 存儲相關的 API 中,下面分核心知識點詳細説明:

一、核心使用場景:兩大存儲對象

getItem 並非全局通用方法,主要綁定在瀏覽器提供的兩個存儲對象上,也是日常開發的核心場景:

  1. localStorage:永久存儲(除非手動刪除或清理瀏覽器數據,否則數據會一直保留在本地)
  2. sessionStorage:會話存儲(僅在當前瀏覽器標籤頁有效,標籤頁關閉後數據自動銷燬)

這兩個對象的 getItem 用法完全一致,僅存儲有效期不同。

二、基本語法

語法格式非常簡潔,參數和返回值有明確規範:

// 通用語法
存儲對象.getItem(keyName);
  • 參數 keyName:必需,字符串類型(String),表示你要讀取的存儲數據對應的「鍵名」(存儲時已定義的唯一標識)。
  • 返回值
    • 如果存在對應 keyName 的數據,返回該數據對應的「字符串值」(所有 Web 存儲的數據都會被自動序列化為字符串格式存儲);
    • 如果不存在對應 keyName(鍵名不存在或未存儲該數據),返回 null(這是判斷某個鍵是否存在的重要依據)。

三、完整代碼示例

下面通過 localStorage 演示 getItem 的完整使用(sessionStorage 用法完全替換即可):

// 第一步:先通過 setItem 存儲數據(搭配 getItem 使用,模擬實際開發場景)
localStorage.setItem("userName", "張三"); // 存儲鍵名:userName,鍵值:張三
localStorage.setItem("userAge", "25"); // 存儲數字時,也會自動轉為字符串
localStorage.setItem("userInfo", JSON.stringify({ id: 1, gender: "男" })); // 存儲對象需先序列化

// 第二步:通過 getItem 讀取數據
const userName = localStorage.getItem("userName");
const userAge = localStorage.getItem("userAge");
const userInfo = JSON.parse(localStorage.getItem("userInfo")); // 讀取對象需反序列化
const nonExistKey = localStorage.getItem("unKnownKey"); // 讀取不存在的鍵

// 第三步:打印結果
console.log(userName); // 輸出:"張三"(字符串類型)
console.log(userAge); // 輸出:"25"(字符串類型,注意不是數字 25)
console.log(userInfo); // 輸出:{ id: 1, gender: "男" }(還原為對象)
console.log(nonExistKey); // 輸出:null(鍵不存在時返回 null)

// 可選:刪除存儲(輔助理解)
localStorage.removeItem("userName");
console.log(localStorage.getItem("userName")); // 輸出:null(刪除後讀取也返回 null)

四、補充説明

  1. 數據類型限制:Web 存儲僅支持字符串格式存儲,因此讀取非字符串類型(對象、數組、數字等)時,需要配合 JSON.stringify(存儲時)和 JSON.parse(讀取後)進行轉換,否則會讀取到無效格式。
  2. 兼容性:支持所有現代瀏覽器,以及 IE8 及以上版本,無需額外兼容處理。
  3. 區別於其他 getItem:部分其他 API 也有 getItem 方法(如 Cookie 相關、IndexedDB 等),但 Web 開發中最常用的仍是 localStoragesessionStorage 上的 getItem,其核心邏輯都是「按鍵取值」,僅API細節略有差異。

總結

  1. getItem 核心功能:從瀏覽器 localStorage/sessionStorage 中按鍵名讀取存儲值;
  2. 關鍵特性:參數為字符串鍵名,存在對應數據返回字符串值,不存在返回 null
  3. 核心用法:配合 setItem 存儲數據,讀取對象/數組時需用 JSON.parse 反序列化。
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.