1、JavaScript有哪些?
分别是Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。
其中Symbol和Bigint是ES6中新增的数据类型。
原始数据类型:Undefined、Null、Boolean、Number、String
引用数据类型:对象、数组、函数
2、检测数据类型的方法有哪些?
2.1 typeof
console.log(typeof 2); // number
console.log(typeof true); // boolean
console.log(typeof 'str'); // string
console.log(typeof []); // object
console.log(typeof function(){}); // function
console.log(typeof {}); // object
console.log(typeof undefined); // undefined
console.log(typeof null); // object
注意:在使用typeof判断数据类型时,会将null,数组和对象判断为object类型。
2.2 instanceof
console.log(2 instanceof Number) //false
console.log('str' instanceof String) //false
console.log(function(){} instanceof Function) //true
注意:instanceof方法,只能正确判断引用类型数据,内部机制是判断在其原型链中是否能找到该类型的原型。
2.3 constructor
console.log((2).constructor === Number) //true
console.log(('str').constructor === String) //true
console.log(({}).constructor === Object) //true
注意:如果创建一个对象来改变它的原型,constructor
就不能用来判断数据类型了
function Fn(){}
Fn.prototype = new Array()
var f =new Fn()
console.log(f.constructor === Fn) //false
console.log(f.constructor === Array) //true
2.4 Object.prototype.toString.call()
var aaa=Object.prototype.toString
console.log(aaa.call(1)) //object Number
console.log(aaa.call('str')) //object String
console.log(aaa.call(null)) //object Null
2.5 jQuery方法: jquery.type()
console.log(jQuery.type(undefined) === "undefined") //true
console.log(jQuery.type(123) === "number") //true
注意:据说是一个万能的方法,但是在使用的时候要引入jquery文件没不然会报错JQuery is not defined。
2.6 ===
var num=null
console.log(num === null)
大部分用来判断是否为空的情况。