面试题整理:js的数据类型,如何判断数据类型?

一.js数据类型可以分为两种 :

第一种:基本类型

(string)字符串 (undefinde)未定义 (null)空   (numbel)数字    (boolean) 布尔 等

第二种:引用类型

数字 (array)   function (函数) object(对象)等

二.检测数据类型的4种方法

typeof

instanceof

constructor

object.prototype.tostring.call()

1)数据类型检测方法一:typeof

语法typeof 变量

typeof 1; //'number'
typeof ""; //'string'
typeof true; //'boolean'
typeof undefined; // 'undefined'
typeof null; //'object'
typeof [1, 2, 3]; //'object'
typeof {}; //'object'
typeof function () {}; //'function'
typeof Symbol(); //'symbol'

总结:

typeof 返回的值类型都是字符串符类型

typeof 判断基本数据类型时,除了null 的输出结果为‘object’的字符串

typeof 判断引用类型时,除了函数输出function 的字符串,其他都是object的字符串

2)数据类型检测方法二:instanceof

instanceof 用来判断两个对象是否属于实例关系,通过这种关系来判断对象是否以属于某一类型。(但不能判断具体属于哪种类型)。

instanceof 可以准确判断引用数据类型,它的原理是:检测构造函数的prototype 属性是否在某个实例对象的原型链上。

instanceof 返回值为布尔值

3)数据类型检测方法三:constructor(构造函数

constructor 基本能检测所有类型(除了null 和undefined),容易被修改,也不能跨iframe

注意:

constructor 是不稳定的,因为开发者可以重写prototype,重写后,原有的 constructor 引用会丢失,需要我们重新指定constructor的引用在没有重新指定时,constructor 会认为 object

4).数据类型检测方法四:object.prototype.toString.call()

toString()是 Object 的原型方法调用方法认返回当前对象的 [object type]。其中 type 就是对象的类型。

Object.prototype.toString.call(""); // [object String]
Object.prototype.toString.call(1); // [object Number]
Object.prototype.toString.call(true); // [object Boolean]
Object.prototype.toString.call(Symbol()); // [object Symbol]
Object.prototype.toString.call(undefined); // [object Undefined]
Object.prototype.toString.call(new Function()); // [object Function]
Object.prototype.toString.call(new Date()); // [object Date]
Object.prototype.toString.call([]); // [object Array]
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call(document); // [object HTMLDocument]
Object.prototype.toString.call(window); // [object Window]

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...