Ваша проблема в том, что
document.cookie.indexOf('cookies:all_checked')
вернет либо индекс, либо -1
(если не найден).
В вашем примере он вернет 0
, потому что document.cookie
начинается с искомой строки.
Затем !0
оценивается как true
, поскольку 0
оценивается как false
, а true
оцениваетсяна 1
, что действительно >= 0
.
И 0
также >= 0
.
Вот почему вы получаете true
каждый раз.
Выследует попробовать:
!(document.cookie.indexOf('...') >= 0) // false
document.cookie.indexOf('...') >= 0 // true
Обратите внимание, что !anyNumber
приведет к true
или false
, которые оба будут >= 0
, так как true
оценивается как 1
и *От 1039 * до 0
, которые оба >= 0
Поэтому !anyNumber >= 0
всегда будет true
.
В качестве примечания, обратите внимание, что:
var variable = document.cookie == 'cookies:all_checked'
делает не устанавливать / создавать cookie
.
Что он проверяет, равен ли cookie
'cookies:all_checked'
и присваивает ли этот результат (true
или false
) до variable
.