JS 中 判断数据类型 typeof详解

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'
原文地址:https://www.cnblogs.com/Xuman0927/p/12050867.html