JS 有哪些数据类型,如何判断这些数据类型 ?

1.JS 有哪些数据类型,如何判断这些数据类型 ?

一.js数据类型可以分为两种 :
第一种:基本类型
(string)字符串 (undefined)未定义 (null)空 (numbel) 数字
boolean(布尔) 等
第二种 :引用类型
数字(array ) function(函数) object(对象)等

二.检测数据类型的4中方法
typeof
instanceof
constructor
object.prototype.tostring.call()

① 数据类型检测方法一: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的字符串

② 数据类型检测方法二:instanceof
instanceof 用来判断两个对象是否属于实例关系,通过这种关系来判断对象是否属于某一类型。(但不能判断对象具体属于哪种类型)。
instanceof 可以准确判断引用数据类型,它的原理是:检测构造函数的 prototype 属性是否在某个实例对象的原型链上。
instanceof 返回值为布尔值

③ 数据类型检测方法三:constructor(构造函数)
constructor 基本能检测所有类型(除了null和undefined),容易被修改,也不能跨iframe
注意:
constructor 是不稳定的,因为开发者可以重写 prototype,重写后,原有的 constructor 引用会丢失,需要我们重新指定 constructor 的引用
在没有重新指定时,constructor 会默认为 Object

④ 、数据类型检测方法四: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]

你可能感兴趣的:(javascript,前端,开发语言)