へぇ〜、そうなんだ2

mizuno-amiさんがNSBASで変数の型について試されたら、おもしろい結果になっています。
BASICでの変数はCと比べてかなり緩いので、そこが楽なところでもありますが、思った通りの結果が得られず、悩ましいところでもあります。
私はMicrosoftのBASICで覚えたことが、NS Basicで通用しないことがままあって、最初はちょっととまどいました。
で、試してみたのが次のコードです。

Dim a,b,c,d
  
  localStorage.a = 1
  a = localStorage.a
  localStorage.d = "TEST"
  d = localStorage.d
  b = 2
  c = "3"
  
  Print TypeName(a)
  Print TypeName(b)
  Print TypeName(c)
  Print TypeName(d)
  
  Print a + b
  Print b + c
  Print b & c
  Print b + CInt(c)
  print b + CInt(a)

結果は次の通り、

number
integer
integer
string
12
23
23
5
3

変数aにnumberという不思議な型が表示されています。
変数dの型がstringと表示されているんで、numberは何らかの数値型のようにも思えますが、それともVariant型のようなものなんでしょうか?
加算の結果は数値型同士では数値として扱われ、文字列型と数値型では文字列型として扱われるようです。
mizuno-amiさんが言われるように変数cがIntegerというのは不思議です。