こんにちは。
自分も、localStorageについて詳しくはないので、調べたことを
回答します。
以下のような、簡単なHTMLとJSを作成しました。
lang
1<!DOCTYPE html>
2<html>
3<head>
4<meta charset="UTF-8">
5<title>9849</title>
6<script>
7if ( localStorage ) {
8
9 var x = 123;
10
11 console.log("x=" + x + ", typeof(x): " + typeof(x));
12
13 localStorage.setItem("key", x);
14
15 var y = localStorage.getItem("key");
16
17 console.log("y=" + y + ", typeof(y): " + typeof(y));
18
19}
20</script>
21</head>
22<body>
23</body>
24</html>
このHTMLをChromeで表示させて、デベロッパーツールのコンソールを
みると
x=123, typeof(x): number
y=123, typeof(y): string
と出力されていました。
これを見ると、localStorageでは文字列になって保存されているの
だろうなと推測できます。この推測をもとに、W3Cのサイトで
Web Storageの仕様にあたったところ、以下のページ
4.1 The Storage interface
http://www.w3.org/TR/webstorage/#storage-0
に以下のように書いてありました。
Each Storage object provides access to a list of key/value pairs,
which are sometimes called items. Keys are strings. Any string
(including the empty string) is a valid key. Values are similarly strings.
上記の太字部分を和訳すれば、
「値もまた同様に文字列である。」
となるかと思います。
また、インタフェースの仕様にも
lang
1interface Storage {
2 readonly attribute unsigned long length;
3 DOMString? key(unsigned long index);
4 getter DOMString getItem(DOMString key);
5 setter creator void setItem(DOMString key, DOMString value);
6 deleter void removeItem(DOMString key);
7 void clear();
8};
とあって、getItem の返す型のDOMString とは何かといえば
http://www.w3.org/TR/DOM-Level-3-Core/core.html#DOMString
に
For Java and ECMAScript, DOMString is bound to the String type
because both languages also use UTF-16 as their encoding.
とあるので、(ECMAScriptたる)javascriptでは、DOMStringは文字列型として
実装されているということになるでしょう。
以上をまとめて、ご質問の回答としては
数値をsetItemしても、getItemで取り出すと文字列になって返される。
なぜなら、それが仕様だから。
というものになりそうです。
従って、取り出してから、それを数値として扱いたいなら
文字列から数値への変換をする必要がある、ということに
なります。
以上参考になりましたら幸いです。
※上記は、質問を読んでから調べたことを書いているので、お詳しい方が
ご覧になって、間違いがありましたらぜひご教示ください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/15 10:44