JavaScript 中 localStorage 和 sessionStorage 的处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

/**
* 保存到本地 localStorage
* @param {String} key 键
* @param {any} value 值
* @returns {Boolean} 是否成功
* @description 保存到本地 localStorage
*/
export const setLocalStorage = (key, value) => {
// key 值必须为有效字符串,尽管其值的类型不限于 String,但是为了统一,还是规范下。
if (typeof key !== 'string') {
return false;
}
localStorage.setItem(key, JSON.stringify(value));
return true;
};

/**
* 从 localStorage 中取出保存的值
* @param {String} key 键
* @returns {any} value 值
* @description 从 localStorage 中取出保存的值
*/
export const getLocalStorage = key => {
// key 值必须为有效字符串,尽管其值的类型不限于 String,但是为了统一,还是规范下。
if (typeof key !== 'string') {
return;
}
const str = localStorage.getItem(key);
try {
return JSON.parse(str);
} catch (error) {
return str === 'undefined' ? undefined : str;
}
};

/**
* 保存到本地 sessionStorage
* @param {String} key 键
* @param {any} value 值
* @returns {Boolean} 是否成功
* @description 保存到本地 sessionStorage
*/
export const setSessionStorage = (key, value) => {
// key 值必须为有效字符串,尽管其值的类型不限于 String,但是为了统一,还是规范下。
if (typeof key !== 'string') {
return false;
}
sessionStorage.setItem(key, JSON.stringify(value));
return true;
};

/**
* 从 sessionStorage 中取出保存的值
* @param {String} key 键
* @returns {any} value 值
* @description 从 sessionStorage 中取出保存的值
*/
export const getSessionStorage = key => {
// key 值必须为有效字符串,尽管其值的类型不限于 String,但是为了统一,还是规范下。
if (typeof key !== 'string') {
return;
}
const str = sessionStorage.getItem(key);
try {
return JSON.parse(str);
} catch (error) {
return str === 'undefined' ? undefined : str;
}
};