在Java中,可以使用instanceOf或getClass()在变量上查找其类型。
instanceOf
getClass()
如何在JavaScript中找出不是强类型的变量类型?
例如,如何知道bara是a Boolean还是a Number或a String?
bar
Boolean
Number
String
function foo(bar) { // what do I do here? }
用途typeof:
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"
数组的类型为still object。在这里,您确实需要instanceof操作员。
object
instanceof
更新:
另一种有趣的方式是检查以下内容的输出Object.prototype.toString:
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]"
这样,您就不必区分原始值和对象。