falseはfalse、"false"はtrue
JavaScriptでは文字列"false"をBooleanでとるとtrueに判定される(もっというと、空文字列""以外のStringはtrue)。そのため、falseが何らかの拍子で文字列扱いになってるとバグを生んだりする。
実例としてはlocalStorage/sessionStorageに直接真偽をtrue/falseで入れて参照しようとすると起こったりする(一応chrome63で確認)。
回避方法その1(自分の回答)
真偽を0(false)or1(true)で持つようにし、かつ判定時に数値変換する
判定するとき
hoge.js
if(~~localStorage.hoge){
// 1(=true)の時のロジック
}
この場合、真偽を反転(スイッチング)させたいときは以下で済む。
hoge.js
localStorage.hoge ^= 1;
回避方法その2(別解)
[JavaScript][TypeScript] 文字列("true", "false")をboolean型に変換する
どうしてもture/falseという見た目で持っておかないといけない場合はこちらを採用することになるかしら。