乐闻世界logo
搜索文章和话题

What is the shortest function for reading a cookie by name in JavaScript?

1 个月前提问
1 个月前修改
浏览次数9

1个答案

1

在JavaScript中,最短的函数来按名称读取cookie可以使用document.cookie属性,然后进行字符串的分割和查找。下面是一个紧凑而有效的函数,用于按名称获取cookie的值:

javascript
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形式的字符串。

  1. 正则表达式构建new RegExp(...)用于创建一个正则表达式,它匹配cookie名称。这里使用了name.replace(...)来转义任何特殊字符(例如点号),这是因为这些字符在正则表达式中有特殊的含义。

  2. Match 方法:正则表达式的match()方法用来检索字符串中的匹配项。这里的匹配是针对整个document.cookie字符串。

  3. 解码和返回:如果找到匹配项(matches非空),则使用decodeURIComponent对匹配项(即cookie的值)进行解码,因为cookie的值可以编码以包含特殊字符。如果没有找到匹配项,则返回undefined

使用例子

假设你的网页上有一个cookie,名称为"user",值为"John Doe"。如果你想获取这个cookie的值,可以这样调用函数:

javascript
let userName = getCookie('user'); console.log(userName); // 输出: John Doe

这个函数简短且高效,满足按名称获取cookie值的需求,并且考虑了特殊字符的处理和解码。

2024年8月12日 11:33 回复

你的答案