typeof
typeof基本判断
| 类型 | 结果 | 描述 |
|---|---|---|
| Undefined | "undefined" | |
| Null | "object" | 最初实现中,object标签为0,Null的标签为0x00, 所以null被误认为object |
| Boolean | "boolean" | |
| Number | "number" | |
| BigInt | "bigint" | |
| String | "string" | |
| Symbol | "symbol" | |
| 宿主对象 | 取决于具体实现 | |
| Function对象 | "function" | 除 Function 外的所有构造函数的类型都是 'object, Number |
| 其他任何对象 | "object" |
运算优先级
异常
在 let 和 const 声明之前,对一个变量使用 typeof 会抛出 ReferenceError,块作用域变量在块的头部处于 暂存死区
typeof undeclaredVariable === 'undefined';
typeof newLetVariable; // ReferenceError
typeof newConstVariable; // ReferenceError
typeof newClass; // ReferenceError
let newLetVariable;
const newConstVariable = 'hello';
class newClass{};例外
所有浏览器都存在 typeof document.all === undefined