JavaScript - НЕ против NULL с локальным хранилищем - PullRequest
0 голосов
/ 22 января 2019

Итак, я хочу получить переменную из локального хранилища. Если он не существует в локальном хранилище, я хочу создать эту переменную. Я использовал if (x==null), чтобы увидеть, существует ли он, тогда я заметил, что if(!x) имеет тот же результат. Можно ли использовать ! в этой ситуации? Я не знал, ! и null одинаковы здесь. Также при проверке на ноль, я должен использовать === или == нормально?

Вот два примера, которые дают мне одинаковые результаты.

<script>
localStorage.clear();

a=localStorage.getItem('a');if (!a) a='hello';
alert(a);

x=localStorage.getItem('x');if (!x) x=0.7;
alert(x);

</script>

<script>
localStorage.clear();

a=localStorage.getItem('a');if (a==null) a='hello';
alert(a);

x=localStorage.getItem('x');if (x==null) x=0.7;
alert(x);

</script>

Ответы [ 2 ]

0 голосов
/ 22 января 2019

https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem

localStorage.getItem возвращает ноль, если ключ не существует. Так что a === null будет самой конкретной проверкой, если ключ не существует. Тем не менее, ноль является ложью в JavaScript. Таким образом, вы можете уменьшить чек до этого:

a = localStorage.getItem('a') || 'hello';

Который функционирует так же, как ваш if с оператором not

0 голосов
/ 22 января 2019

не совсем то же самое ... Этот !x проверяет истинное значение, но что-нибудь между null, undefined или даже 0 вернет false.

Существует также существенная разница между == и ===, где == попытается выполнить автоматическое преобразование типа, чтобы проверить, совместимы ли значения каким-либо образом, но === проверит на строгий равенство.

Подробнее о типах JavaScript и их взаимодействии с различными операторами можно узнать по этой ссылке Значения, типы и операторы

...