错误的 if 语句计算,文档.cookie



我正在尝试使用 document.cookie 执行一些操作, 我检查下面提到的一些 If 条件:

if((!document.cookie.indexOf('cookies:all_checked') >= 0) ||
(!document.cookie.indexOf('cookies:first_and_second') != -1) ||
(!document.cookie.indexOf('cookies:first_and_third') != -1) ||
(!document.cookie.indexOf('cookies:first_only') != -1)){    
createCookies();   
}

在此语句之前,我创建这样的cookie

var variable = document.cookie == 'cookies:all_checked'

麻烦的是无论我尝试检查

(!document.cookie.indexOf('cookies:all_checked') >= 0)

或者没有! 标记我在这种情况下得到真。如何检查带有此内容的cookie是否真的设置好了?

你的问题是

document.cookie.indexOf('cookies:all_checked')

将返回索引或-1(未找到时(。

在您的示例中,它将返回0因为document.cookie以您要查找的字符串开头

然后,!0将计算到true,就像0评估到falsetrue计算到1,这确实是>= 0

0也很>= 0.

这就是为什么你每次都会得到true

您应该尝试:

!(document.cookie.indexOf('...') >= 0) // false
document.cookie.indexOf('...') >= 0  // true

请注意,!anyNumber将导致truefalse,这两者都将被>= 0,因为true的计算结果将是1false

计算结果为0,两者都是>= 0

因此,!anyNumber >= 0将永远true.


作为旁注,请注意:

var variable = document.cookie == 'cookies:all_checked'

设置/创建您的cookie

它的作用是检查cookie是否等于'cookies:all_checked'并将这个结果(truefalse(分配给variable

最新更新