小编典典

在 JavaScript 中查找变量类型

all

在 Java 中,您可以使用instanceOfgetClass()在变量上找出它的类型。

如何在 JavaScript 中找出不是强类型的变量类型?

例如,我怎么知道bar是 aBoolean还是 aNumber还是 a String

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

阅读 58

收藏
2022-08-01

共1个答案

小编典典

使用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]"

这样您就不必区分原始值和对象。

2022-08-01