在JavaScript中,最短的函数来按名称读取cookie可以使用document.cookie属性,然后进行字符串的分割和查找。下面是一个紧凑而有效的函数,用于按名称获取cookie的值:
function getCookie(name) { let matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; }
示例解释
这个函数首先使用document.cookie来获取当前页面的所有cookie,这些cookie是以分号加空格("; ")分隔的一系列name=value形式的字符串。
- 
正则表达式构建: new RegExp(...)用于创建一个正则表达式,它匹配cookie名称。这里使用了name.replace(...)来转义任何特殊字符(例如点号),这是因为这些字符在正则表达式中有特殊的含义。
- 
Match 方法:正则表达式的 match()方法用来检索字符串中的匹配项。这里的匹配是针对整个document.cookie字符串。
- 
解码和返回:如果找到匹配项( matches非空),则使用decodeURIComponent对匹配项(即cookie的值)进行解码,因为cookie的值可以编码以包含特殊字符。如果没有找到匹配项,则返回undefined。
使用例子
假设你的网页上有一个cookie,名称为"user",值为"John Doe"。如果你想获取这个cookie的值,可以这样调用函数:
let userName = getCookie('user'); console.log(userName); // 输出: John Doe
这个函数简短且高效,满足按名称获取cookie值的需求,并且考虑了特殊字符的处理和解码。
2024年8月12日 11:33 回复
