[英]sessionStorage isn't working as expected
這是我的代碼:
sessionStorage.loggedIn = true;
if (sessionStorage.loggedIn) {
alert('true');
}
else {
alert('false');
}
很簡單。 必須有一些小事我不了解JavaScript如何評估這些表達式。 當我將sessionStorage.loggedIn = false
,“false”警報正確顯示。 但是,當我將sessionStorage.loggedIn
更改為true時,即使清除會話后,“false”警報仍會彈出。 我對這個表達的態度是什么? 看起來很簡單,也許我只需要另外一雙眼睛。
嘗試將代碼更改為
sessionStorage.setItem('loggedIn',JSON.stringify(true));
if (JSON.parse(sessionStorage.getItem('loggedIn'))) {
alert('true');
}
else {
alert('false');
}
它應該在所有主流瀏覽器中保持一致。
與setItem
/ getItem
方法的接口是規范的編寫方式,因此采用這種方式比使用賦值屬性的快捷方式更安全。 此外, sessionStorage
與localStorage
一樣,是一種基於文本的存儲機制,並不適用於存儲對象,因此您需要使用JSON.parse
和JSON.stringify
包裝調用以獲得全面的預期結果。
請注意, JSON.parse
並不總是與undefined / null值一起使用,所以最好先進行一些類型檢查。
WebStorage對象(sessionStorage)中的鍵和值必須是字符串。 如果它們不是字符串,則在分配給sessionStorage時,它們“應該”在瀏覽器的實現中轉換為字符串。 如果您評估“true”或轉換為布爾值,它將正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.