在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  C  HTML/ sessionStorage中已經(jīng)被設(shè)為false的值,通過if判斷為何返回tr

sessionStorage中已經(jīng)被設(shè)為false的值,通過if判斷為何返回true?

sessionStorage.login = false;
if (sessionStorage.login) {
  console.log('已登錄')
  console.log(sessionStorage.login)
} else {
  console.log(sessionStorage.login)
  console.log('未登錄')
}

如代碼sessionStorage.login已經(jīng)被設(shè)為false
console.log(sessionStorage.login)也是返回false
為何通過if判斷返回是true呢?
圖片描述

回答
編輯回答
孤巷

注意紅色方框的內(nèi)容

注意圖片,
我們先看1:在控制臺打印login值,false。好像沒問題,No!注意雙引號,它其實是字符串。
再看2:我們if("false"),發(fā)現(xiàn)控制流程走的是true【3】!

看4:我們打印一個真正的Boolean值,注意沒有引號,并且是紫色。

sessionStorage只能存放String類型。

sessionStorage.login = {};//就算賦值一個對象
"[object Object]"http://輸出也是這樣

你可以換種方式,使用0、1,然后用字符串對比

2018年6月21日 11:23
編輯回答
孤島
 if (JSON.parse(sessionStorage.login)) {
      console.log('已登錄')
      console.log(sessionStorage.login)
    } else {
      console.log(sessionStorage.login)
      console.log('未登錄')
    }

原因是:sessionStorage這些瀏覽器存儲的內(nèi)容是string類型的,所以不管你是設(shè)置為true或者是false,用sessionStorage去取值時都是取到string類型的值,而"false"在js中就是真,所以如果值不為0的情況下永遠都是真。

解決辦法就是上述一樣,先對取到的值轉(zhuǎn)json格式,這時候設(shè)置的值是啥就是啥了。

2017年4月8日 08:55