Tom*_*ito 19 javascript typeof
如果它总是将"对象"作为类型返回,它用于什么?
--update
始终为元素或列表.
它并不总是返回"对象":
alert(typeof "hello");
Run Code Online (Sandbox Code Playgroud)
也就是说,检查对象的一个(可能)更有用的技巧是使用Object.prototype.toString.call()并查看结果:
var t = Object.prototype.toString.call(itIsAMystery);
Run Code Online (Sandbox Code Playgroud)
这会给你一个字符串,就像[object Foo]"Foo"是构造函数(我认为)这个有趣的部分.对于"本机"类型(如Date或String),您将获得该构造函数名称.
根据我的经验,typeof 的主要问题来自区分数组、对象和空值(都返回“对象”)。
为此,我首先检查 typeof,然后检查 null case 或“对象的”构造函数,如下所示:
for (o in obj) {
if (obj.hasOwnProperty(o)) {
switch (typeof obj[o]) {
case "object":
if (obj[o] === null) {
//do somethign with null
} else {
if (obj[o].constructor.name === "Array") {
//do something with an Array
} else {
//do something with an Object
}
}
break;
case "function":
//do something with a function
break;
default:
//do something with strings, booleans, numbers
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
并非所有 typeof 都返回对象。
对象、数组和RegEx返回object.
函数是一个对象(引用类型),但返回类型function。这就是语言上的不一致。
另外要注意的是,undefined返回,undefined而null返回object,这是 JS 中的一个错误。
NaN(不是数字)返回 的类型number。
你最好跟踪所有这些并注意这些奇怪的行为。
这里列出了所有类型的值供您参考:
typeof "Tamal" ---> string
typeof 100 ---> number
typeof true ---> boolean
typeof false ---> boolean
typeof undefined ---> undefined
typeof function() {} ---> function
typeof Symbol() ---> symbol
typeof {name: "Tamal"} ---> object
typeof [1, 2, 3] ---> object
typeof /^/ ---> object
typeof NaN ---> number
typeof null ---> object (bug)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30006 次 |
| 最近记录: |