在 Java 中,您可以使用instanceOf或getClass()在变量上找出它的类型。
instanceOf
getClass()
如何在 JavaScript 中找出不是强类型的变量类型?
例如,我怎么知道bar是 aBoolean还是 aNumber还是 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"
数组的类型仍然是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]"
这样您就不必区分原始值和对象。