Da der Wert ist "undefined"
(ein String ist, beachten Sie die Anführungszeichen) undefined
nicht.
Der Browserspeicher (localStorage/sessionStorage) wandelt beim Speichern alles in eine Zeichenkette um, daher erhalten Sie eine Zeichenkette zurück, egal, was Sie hineinlegen.
Wenn Sie undefined
in einen String coerce erhalten Sie "undefined"
:
console.log(
typeof String(undefined), // "string" this is what storage does to undefined
typeof undefined // "undefined"
);
Sie können mit einem einzigen strengen Vergleich für diese überprüfen currentBusiness === "undefined"
Eine weitere Option einfach nicht sein würde, Speichern Sie undefined
Werte, die dann den Speicher tatsächlich zurückgeben würden Sie undefined
(nicht "undefined"
) bei der Anforderung einen Wert, der nie gespeichert wurde und somit würde Ihre Schecks wie erwartet:
// assume currentBusiness was never stored in the first place
// because we chose not to store undefined values
localStorage["currentBusiness"] === undefined // true
Eine andere Sache, erwähnenswert, ist, dass Sie redundante Kontrollen haben. Ihr erster if
Zustand
if (typeof currentBusiness === 'undefined' || !currentBusiness)
wird wahr sein, wenn der Wert "undefined"
hat Typen, den nur der Wert undefined
hat, oder der Wert falsy, was bedeutet es eine davon ist: "", 0, false, null, undefined, NaN
.
Das bedeutet, wenn der Wert undefined
oder irgendetwas falsy ist (dies ist an sich überflüssig, da undefined
bereits falsy ist), es wird die erste if
und die anderen drei Prüfungen wird nie für einen falsy Wert immer geben, weil sie alle Check passieren .
Als der Tat nur ein falsy Scheck würde alle Ihre Bedingungen abdecken:
if (!currentBusiness) // this handles all your individual checks
Bitte Post-Text, keine Bilder. Nicht jeder kann Bilder sehen und es ist viel einfacher, Text zu suchen. – RobG