最轻量快速的判断方式是用document.cookie.indexOf("key=")!==-1,但需注意边界匹配问题;更稳妥的是封装getCookie()函数再判空,避免前缀干扰。

直接用 document.cookie.indexOf("key=") 判断最轻量、最快,但要注意边界匹配问题;更稳妥的方式是封装一个 getCookie() 函数再判空。
用 indexOf 快速粗筛(适合简单场景)
这是最简捷的判断方式,适用于不需要精确匹配、且 Cookie 名不重叠的场景。例如确认是否存在名为 username 的 Cookie:
- 写法:
document.cookie.indexOf("username=") !== -1 - 原理:把整个
document.cookie当作字符串搜索,找到"username="子串即认为存在 - ⚠️ 注意:若同时存在
usernames=xxx和username=abc,indexOf会误判前者为真 —— 因为它不区分单词边界
用 getCookie() + null 判定(推荐标准做法)
真正健壮的判断,应解析出键值对再比对,避免前缀干扰。核心是写一个安全的 getCookie(name):
- 将
document.cookie按"; "分割成数组 - 对每个项用
=拆分为键和值,trim()去首尾空格 - 严格比对键名(建议忽略大小写或统一小写)
- 返回解码后的值,找不到则返回
null
之后只需:if (getCookie("username") !== null) { /* 存在 */ }
立即学习“Java免费学习笔记(深入)”;
检查 document.cookie 是否为空字符串
如果目标是“有没有任何 Cookie”,而非某个特定 Key,可先快速兜底:
-
document.cookie === ""或document.cookie.length === 0 - 成立则说明当前域名下没有任何 Cookie,自然也不含目标 Key
- 这个判断开销极小,适合前置过滤
不建议用正则或 in 操作符
in 是用于 JavaScript 对象的,对 document.cookie 字符串无效;正则虽能精准匹配(如 /(^|;\s*)username=([^;]*)/),但性能略低、易出错,日常开发中没必要过度复杂化。


















