Вызывайте функцию, только если значение не является ни нулевым, ни неопределенным - PullRequest
3 голосов
/ 28 марта 2012

Когда нажимается кнопка, я проверяю, существует ли что-то в ключе локального хранилища следующим образом:

var a = localStorage.getItem('foo');
if (typeof a != 'undefined') {
    // Function
}

, но если ключ вообще не существует, он возвращает ноль.Как я могу вызвать , если не неопределено и не равно null, сделать функцию , иначе вернуть true (?) Или продолжить?

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

JavaScript имеет концепцию ложных значений ... то есть 0, null, undefined и пустой строки.

Из-за этого вы должны иметь возможность просто проверить, является ли a «правдивым» (т. Е. Не одним из значений, которые я упомянул выше), выполнив следующее:

var a = localStorage.getItem('foo');
if (a) {
    // Function
}

Больше информации от SitePoint доступно здесь

0 голосов
/ 19 июля 2015

Не следует использовать ложные сравнения JavaScript, если false, 0, NaN или пустая строка являются допустимыми значениями в вашем localStorage.

Вместо этого вы должны проверить, равен ли элемент null или равен undefined:

var a = localStorage.getItem('foo');
if (a === null || a === undefined) {
    // Function
}

Обратите внимание, что оператор тройного равенства (===) сравнивает точно, без приведения типа . Используя оператор двойного равенства (==), применяется специальный набор правил для скрытия похожих значений, но разных типов. Одним из наиболее полезных из них является null == undefined, позволяющий упростить приведенный выше код:

var a = localStorage.getItem('foo');
if (a != null) {
    // Function
}

Если значение равно null или undefined, код внутри не будет работать.

...