неправильно, если оценка заявления, document.cookie - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь выполнить какое-то действие с 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)

или то же самое без!Марк, я вернусь с этим условиемКак проверить, действительно ли установлены файлы cookie с этим содержимым?

1 Ответ

0 голосов
/ 22 мая 2018

Ваша проблема в том, что

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...