微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

面试题整理: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]

原文地址:https://www.jb51.cc/wenti/3283758.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐