typeof 可用来获取检测变量的数据类型
语法
typeof operand
typeof(operand)
参数
operand
一个表示对象或原始值的表达式,其类型将被返回。
描述
下表总结了 typeof
可能的返回值。有关类型和原始值的更多信息,可查看
类型 | 结果 |
---|---|
Undefined | "undefined" |
Null | "object" (见下文) |
Boolean | "boolean" |
Number | "number" |
BigInt | "bigint" |
String | "string" |
Symbol (ECMAScript 2015 新增) | "symbol" |
宿主对象(由 JS 环境提供) | 取决于具体实现 |
Function 对象 (按照 ECMA-262 规范实现 [[Call]]) | "function" |
其他任何对象 | "object" |
// 数值 number
console.log(typeof 37);
console.log(typeof 3.14);
console.log(typeof(42));
console.log(typeof Math.LN2);
console.log(typeof Infinity);
console.log(typeof Number(1)); //Number()函数 会尝试把参数解析成数值
console.log(typeof NaN); //尽管它是 "Not-A-Number" (非数值) 的缩写
// 字符串 string
console.log(typeof '');
console.log(typeof 'bla');
console.log(typeof `template literal`);
console.log(typeof '1'); //注意内容为数字的字符串仍是字符串
console.log(typeof(typeof 1)); //总是返回一个字符串
console.log(typeof String(1)); //String() 函数把对象的值转换为字符串 将任意值转换为字符串,比 toString 更安全
// 布尔值 boolean
console.log(typeof true);
console.log(typeof false);
console.log(typeof Boolean(1)); //Boolean() 会基于参数是真值还是虚值进行转换
console.log(typeof !!(1)); //两次调用 ! (逻辑非) 操作符相当于 Boolean()
// Symbols symbols
console.log(typeof Symbol());
console.log(typeof Symbol('foo'));
console.log(typeof Symbol.iterator);
console.log("-----------------------------------------");
// Undefined undefined
console.log(typeof undefined);
console.log(typeof declaredButUndefinedVariable);
console.log(typeof undeclaredVariable);
// 对象 object
console.log(typeof {
a: 1
});
console.log(typeof [1, 2, 4]);
console.log(typeof new Date());
console.log(typeof /regex/); // 历史结果请参阅正则表达式部分
console.log("-----------------------------------------");
// 函数 function
console.log(typeof
function() {});
console.log(typeof class C {});
console.log(typeof Math.sin);
null
// JavaScript 诞生以来便如此
typeof null === 'object';
使用 new 操作符
// 除 Function 外的所有构造函数的类型都是 'object'
var str = new String('String');
var num = new Number(100);
typeof str; // 返回 'object'
typeof num; // 返回 'object'
var func = new Function();
typeof func; // 返回 'function'
语法中的括号
// 括号有无将决定表达式的类型。
var iData = 99;
typeof iData + ' Wisen'; // 'number Wisen'
typeof (iData + ' Wisen'); // 'string'