Web Storage の Storage オブジェクトが扱う key-value ペアの値は文字列である
JavaScript のソースコードいじってたんですよ。 他の人が書いたやつ。
localStorage.setItem( "confname", true );
みたいな行があったんですよ。 Web Storage のこと詳しくないのだけれど、これを見たら localStorage が扱う key-value ペアの値として true, false も使えるんだと思うじゃないですか。 だから
localStorage.setItem( "confname", false );
って行を自分で書いたんですよ。 そしたら localStorage.getItem( "confname" )
が偽になるはずじゃないですか。 それがならなかったんですよ。 なんでだろうなんでだろう、って思って調べたら、なんか localStorage.getItem( "confname" )
で取り出した値の型が String 型だったんですよ。 localStorage
オブジェクトが扱う key-value ペアの値は文字列じゃないとだめなのかな、って思って調べたら文字列じゃないとだめなようでした。 うぐぐ。
2009 年の後半から 2011 年の前半にかけては Storage オブジェクトの key-value ペアの値としては任意の型が使える、という方向で仕様策定が進められていたみたいですが、各ブラウザの実装と合っていない (し、ブラウザ実装者は任意の型を扱えるようにすることに特に興味をもっていないようである) ということで仕様案の方が変更されたようです。
- 議論 : Bug 12111 - spec for Storage object getItem(key) method does not match implementation behavior
- Bug 12111 を受けての WHATWG 側の変更 : HTML5 Tracker - r6364: Remove the structed data support from Web Storage
- WHATWG HTML5 r6364 の変更を受けての W3C 側の変更 : html5/webstorage/Overview.html - diff - 1.178