一角獣は夜に啼く

ただの日記です。

思ってることとか考えたこととか適当に書きます。 主にソフトウェア開発の話題を扱う 「ひだまりソケットは壊れない」 というブログもやってます。

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 ペアの値としては任意の型が使える、という方向で仕様策定が進められていたみたいですが、各ブラウザの実装と合っていない (し、ブラウザ実装者は任意の型を扱えるようにすることに特に興味をもっていないようである) ということで仕様案の方が変更されたようです。