在JavaScript中,最短的函数来按名称读取cookie可以使用document.cookie
属性,然后进行字符串的分割和查找。下面是一个紧凑而有效的函数,用于按名称获取cookie的值:
javascriptfunction 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的值,可以这样调用函数:
javascriptlet userName = getCookie('user'); console.log(userName); // 输出: John Doe
这个函数简短且高效,满足按名称获取cookie值的需求,并且考虑了特殊字符的处理和解码。
2024年8月12日 11:33 回复