如果声明评估错误,document.cookie

时间:2018-05-22 08:04:04

标签: javascript if-statement cookies

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

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)

或同样没有!马克我对这种情况的认真。如何检查是否真的设置了这个内容?

1 个答案:

答案 0 :(得分:1)

你的问题是那个

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

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

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

然后,!0评估为true0评估为falsetrue评估为1>= 0确实{ {1}}。

0也是>= 0

这就是你每次都获得true的原因。

你应该尝试:

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

请注意,!anyNumber将导致truefalse >= 0true 1评估为false0 {1}}至>= 0 !anyNumber >= 0

因此,true始终为var variable = document.cookie == 'cookies:all_checked'

作为旁注,请注意:

cookie

设置/创建您的cookie

它的作用是检查'cookies:all_checked'是否等于true并将此结果(falsevariable)分配给NCRAM955E/ RNCMST954E/ RNCMST957E/ test.py*