LoginSignup
3
1

More than 5 years have passed since last update.

JavaScriptで"false"が文字列扱いされる場合の覚書

Posted at

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という見た目で持っておかないといけない場合はこちらを採用することになるかしら。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1