1. ホーム
  2. javascript

[解決済み] JavaScriptで変数の型を見つける

2022-04-21 03:17:58

質問

Javaでは instanceOf または getClass() を実行すると、その変数の型がわかります。

Strong-typedでないJavaScriptで変数の型を調べるにはどうしたらいいですか?

例えば、どうすれば barBoolean または Number または String ?

function foo(bar) {
    // what do I do here?
}

どのように解決するのですか?

使用方法 typeof :

> typeof "foo"
"string"
> typeof true
"boolean"
> typeof 42
"number"

ということができるわけです。

if(typeof bar === 'number') {
   //whatever
}

しかし、これらのプリミティブをオブジェクトラッパーで定義する場合は注意が必要です(絶対にやってはいけません、可能な限りリテラルを使用してください)。

> typeof new Boolean(false)
"object"
> typeof new String("foo")
"object"
> typeof new Number(42)
"object"

配列の型は、やはり object . ここで本当に必要なのは instanceof 演算子を使用します。

更新しました。

もうひとつの興味深い方法は Object.prototype.toString :

> Object.prototype.toString.call([1,2,3])
"[object Array]"
> Object.prototype.toString.call("foo bar")
"[object String]"
> Object.prototype.toString.call(45)
"[object Number]"
> Object.prototype.toString.call(false)
"[object Boolean]"
> Object.prototype.toString.call(new String("foo bar"))
"[object String]"
> Object.prototype.toString.call(null)
"[object Null]"
> Object.prototype.toString.call(/123/)
"[object RegExp]"
> Object.prototype.toString.call(undefined)
"[object Undefined]"

これなら、プリミティブ値とオブジェクトを区別する必要はないでしょう。