JS本地存储

cookie

Cookie用于储存不超过 4KB 的小型文本数据;可设置数据过期时间。

// 设置cookie
function setCookie(name, value, daysToLive) {let cookie = name + "=" + encodeURIComponent(value);if (typeof daysToLive === "number") {cookie += "; max-age=" + (daysToLive*24*60*60); // 将天数转换为秒数}document.cookie = cookie;
}// 获取cookie
function getCookie(name) {const cookies = document.cookie.split("; ");for (let i = 0; i < cookies.length; i++) {const [cookieName, cookieValue] = cookies[i].split("=");if (name === cookieName) {return decodeURIComponent(cookieValue);}}return "";
}// 清除 cooie
// 这将会设置cookie的过期时间为1970年1月1日,实际上即时删除了这个cookie。
function clearCookie(name) {document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}// 使用示例
setCookie("username", "John Doe", 7); // 存储一个名为"username"的cookie,有效期为7天
console.log(getCookie("username")); // 输出: John Doe
clearCookie('username'); // 清除username

sessionStorage

会话存储;sessionStorage用于储存不超过5MB的文本数据,页面(会话)关闭,sessionStorage 将会自动删除数据;

key和value都必须是字符串

// 存储数据
sessionStorage.setItem('key', 'value');// 读取数据
let data = sessionStorage.getItem('key');// 删除数据
sessionStorage.removeItem('key');// 清空所有数据 清空当前页面中的本地存储(sessionStorage)数据
sessionStorage.clear();

localStorage

key和value都必须是字符串

本地存储 ;localStorage用于储存不超过5MB的文本数据,持久化的本地存储,除非主动删除数据,否则数据是永不过期;

可以多窗口(页面)共享(同一浏览器可以共享)

以键值对的形式存储使用

// 存储数据
localStorage.setItem('key', 'value');// 读取数据
let data = localStorage.getItem('key');// 删除数据
localStorage.removeItem('key');// 清空所有数据 清空当前页面中的本地存储(localStorage)数据
localStorage.clear();

注意:

localStoragesessionStorage只能存储字符串。如果需要存储对象,可以使用JSON.stringify()将对象转换为字符串,读取时使用JSON.parse()将字符串转换回对象。

例如:

明确

1、typeof关键字 检测数据类型后 的 返回值 的 数据类型 是 string

2、Json 对象所存储的值 可以是: 数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true 或 false)、数组(在中括号中)、对象(在大括号中)、null

let personMessage = {name: "李华",age: "17岁",address: "云南昆明",};let num1 = 10000;let str1 = '"我是一个测试字符串"';let arr1 = [1, 2, 3, 4, 5, 6, 7];let obj1 = [{ age: 12, name: "小明" },{ age: 13, name: "小红" },];// 存function setDateLocal(dateName, date) {// 如果传入的数据类型时对象,那么就转为字符串后再存储if (typeof date == "object") {localStorage.setItem(dateName, JSON.stringify(date));} else {localStorage.setItem(dateName, date);}}// 取function getDateLocal(dateName) {// 对于 str1 取数据会报错,所以在存储前,给str1额外多加上一层单引号就行了// 使用try...catch...来打印可能抛出异常的异常信息try {JSON.parse(localStorage.getItem(dateName));} catch (error) {console.log(error);}// 如果需要取出的数据原本是对象类型,那么就在返回数据前转为对象再返回if (typeof JSON.parse(localStorage.getItem(dateName)) == "object") {return JSON.parse(localStorage.getItem(dateName));} else {return localStorage.getItem(dateName);}}// 移除某个本地存储值function delDateLocal(dateName) {localStorage.removeItem(dateName);}// 移除所有function delAllDateLocal() {localStorage.clear();}setDateLocal("personMessage", personMessage);console.log("personMessageCopy", getDateLocal("personMessage"));setDateLocal("num1", num1);console.log("num1", getDateLocal("num1"));// 对于num1而言,number转为string存储在本地,在取出时从string再转为numbersetDateLocal("str1", str1);console.log("str1", getDateLocal("str1"));setDateLocal("arr1", arr1);console.log("arr1", getDateLocal("arr1"));setDateLocal("obj1", obj1);console.log("obj1", getDateLocal("obj1"));// delDateLocal("arr1");// delAllDateLocal();

区别

1:时效性–cookie可以设置过期时间;localStorage是永久性的储存,需用户自己手动清除;sessionStorage页面关闭自动清楚数据;

2:储存大小–cookie一般储存不超过4KB数据,localStorage和sessionStorage一般储存不超过5MB数据(看浏览器机制);

3:数据与服务器之间的交互方式–cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端; sessionStoragelocalStorage不会自动把数据发给服务器,仅在本地保存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构造,CF862C. Mahmoud and Ehab and the xor

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 862C - Codeforces 二、解题报告 1、思路分析 非常松的一道构造题目 我们只需让最终的异或和为x即可 下面给出个人一种构造方式&#xff1a; 先选1~N-3&#xff0c;然后令o (1 << 17) …

Oracle表分区的基本使用

什么是表空间 是一个或多个数据文件的集合&#xff0c;所有的数据对象都存放在指定的表空间中&#xff0c;但主要存放的是表&#xff0c;所以称为表空间 什么是表分区 表分区就是把一张大数据的表&#xff0c;根据分区策略进行分区&#xff0c;分区设置完成之后&#xff0c;…

Redis5学习笔记之三:事务、锁和集成

3. 事务&#xff0c;锁和集成 3.1 事务 3.1.1 基本应用 redis事务的本质&#xff1a;一组命令的集合&#xff0c;一个事务中的所有命令都会被序列化&#xff0c;在执行事务的过程中&#xff0c;会按照顺序执行 redis事务的特点&#xff1a; redis单条命令能够保证原子性&…

第五讲:独立键盘、矩阵键盘的检测原理及实现

IO口电平检测 检测IO口的电平时&#xff0c;需要先给高电平 之后便进入输出状态 #include <reg52.h>void main() {// 配置P1.0为输出模式&#xff0c;并输出高电平P1 0x01; // 将P1.0置为高电平// 读取P1.0的电平状态if (P1 & 0x01) {// 如果P1.0为高电平&#x…

构造函数和析构函数可不可以是虚函致?

构造函数不能是虚函数&#xff0c;虚函数必须把函数地址放在虚函数表中&#xff0c;虚函数表是靠虚函数指针来访问的&#xff0c;而虚函数指针是依靠对象的&#xff0c;构造函数实现的时候对象还不存在&#xff0c;并且如果构造函数是虚函数&#xff0c;在派生类里面调用基类的…

YOLOv9改进策略 | 添加注意力篇 | 利用YOLOv10提出的PSA注意力机制助力YOLOv9有效涨点(附代码 + 详细修改教程)

一、本文介绍 本文给大家带来的改进机制是YOLOv10提出的PSA注意力机制&#xff0c;自注意力在各种视觉任务中得到了广泛应用&#xff0c;因为它具有显著的全局建模能力。然而&#xff0c;自注意力机制表现出较高的计算复杂度和内存占用。为了解决这个问题&#xff0c;鉴于注意…

(笔记)当界面需求较少时直接在DTO类中写逻辑,省去service层

需求&#xff1a;开发月度报表、总报表、折线图 像这种&#xff0c;就简单加三个查询&#xff0c;我个人认为可以直接省去service层代码&#xff0c;只使用controller层和mapper层即可。虽说三层架构的初衷也是为了解耦&#xff0c;但是这种只有查询的代码完全可以省去中间两个…

【iOS】Runtime

文章目录 前言一、Runtime简介二、NSObject库起源isaisa_t结构体cache_t的具体实现class_data_bits_t的具体实现 三、[self class] 与 [super class]四、消息发送与转发五、Runtime应用场景 前言 之前分part学习了Runtime的内容&#xff0c;但是没有系统的总结&#xff0c;这篇…

集成接口的方法

集成接口的方法 目录概述需求&#xff1a;集成接口的方法1. 使用API&#xff08;Application Programming Interface&#xff09;&#xff1a;2. 使用消息队列&#xff1a;3. 使用ETL&#xff08;Extract, Transform, Load&#xff09;工具&#xff1a;4. 使用Web服务&#xff…

网络工程师----第四十七天

1、请简述super vlan和sub vlan的区别&#xff1f; 2、请简述mux vlan 中不同vlan的特点&#xff1f; 3、请基于工作原理简述GVRP协议中三种接口模式的特点&#xff1f; 4、请简述STP的选举过程&#xff1f; 5、两台交换机在不增加成本的情况下为提高链路带宽和可靠性采用链路聚…

【Linux】CPU当前频率及调整CPU频率操作

CPU的governor(调频)策略 governor(调频)策略&#xff0c;linux内核一共有5种调频策略&#xff1a; performance-最高性能&#xff0c;直接使用最高频率&#xff0c;不考虑耗电&#xff1b; interactive-一开始直接使用最高频率&#xff0c;然后根据CPU负载慢慢降低&#xf…

【TB作品】MSP430F5529单片机,火灾报警器,DS18B20温度显示,温控风扇

功能 这段代码是一个基于msp430微控制器的嵌入式系统程序&#xff0c;主要实现了以下功能&#xff1a; 初始化和配置&#xff1a; 初始化了OLED显示屏、DS18B20温度传感器、火焰传感器、风扇&#xff08;通过PWM控制&#xff09;和蜂鸣器。设置了CPU时钟源和分频&#xff0c;以…

网络原理——HTTP/HTTPS ---- HTTPS

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 目录 HTTPS加密与解密HTTPS的工作流程使用对称密钥来加密使用非对称密钥 来对 对称密钥进行加密第三方公证总结 HTTPS https本质上就是在http的基础之上 增加了加密层,抛开加密层之后,剩下的部…

号称超级增程电动,领克07EM-P带来技术变革?

近年来&#xff0c;自主品牌在新能源汽车领域百花齐放&#xff0c;尤其是在混合动力市场上&#xff0c;比亚迪的DM-i技术引领了风潮&#xff0c;秦L的一经亮相&#xff0c;整个车圈都沸腾了&#xff0c;“超级混动”的概念深入人心。 各大自主品牌都有了自己的混动平台和技术。…

使用import语句导入模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 创建模块后&#xff0c;就可以在其他程序中使用该模块了。要使用模块需要先以模块的形式加载模块中的代码&#xff0c;这可以使用import语句实现。im…

步进电机双闭环细分控制(matlab仿真)内含课设等参考文件

1.1 步进电机工作原理 步进电机是一种用电脉冲进行控制&#xff0c;将电脉冲信号转换成相位移的电机&#xff0c;其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可使步进电机旋转一个固定的角度。脉冲的数量决定了旋转的总角度&#xff0c;脉…

System-Verilog

实验报告&#xff1a;使用SystemVerilog在DE2-115开发板上重新设计Verilog练习项目 实验目的 通过学习和掌握SystemVerilog的基本语法&#xff0c;重新设计之前在Verilog中实现的练习项目&#xff0c;如流水灯、全加器、VGA显示和超声波测距&#xff0c;并完成相应的testbenc…

(ICLR,2024)HarMA:高效的协同迁移学习与模态对齐遥感技术

文章目录 相关资料摘要引言方法多模态门控适配器目标函数 实验 相关资料 论文&#xff1a;Efficient Remote Sensing with Harmonized Transfer Learning and Modality Alignment 代码&#xff1a;https://github.com/seekerhuang/HarMA 摘要 随着视觉和语言预训练&#xf…

seRsync + Rsync 实时同步

文章目录 1&#xff0c;结构图2&#xff0c;节点A2.1 安装rsync2.2 安装seRsync2.3&#xff0c; 创建seRsync的守护进程用systemd管理并启动2.4&#xff0c;上传rsync.pass密码文件到配置文件目录&#xff1a;/etc/2.5 &#xff0c;重新加载systemd&#xff0c;启动sersyncd守护…

gdb调试常见指令

quit&#xff1a;退出gdb list/l&#xff1a;l 文件名&#xff1a;行号/函数名&#xff0c;l 行号/函数名 b:b 文件名&#xff1a;行号/函数名&#xff0c;b 行号/函数名 info/i: info b d:d 断电编号 disable/enable 断电编号&#xff1a;使能&#xff08;关闭&#xff0…