欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解JavaScript中的数据类型,以及检测数据类型的方法

程序员文章站 2022-03-20 19:11:33
一.js中的数据类型有哪些?在js中,基本数据类型有五种,分别是 string、number、boolean、null、undefined,不过在es6中新增加的了一种基本数据类型symbol...

一.js中的数据类型有哪些?

在js中,基本数据类型有五种,分别是 string、number、boolean、null、undefined,不过在es6中新增加的了一种基本数据类型symbol(表示独一无二的值),其作用主要是从根本上防止属性名的冲突而设定的。

除了基本数据类型之外,还有引用数据类型object,也有人称之为复杂数据类型,包含了我们常见的array、object、function等。

所以现在js中的数据类型共有七种。

ps: symbol数据类型通过symbol函数生成。也就是说,对象的属性名现在可以有原来的字符串以及现在的symbol类型俩种了,凡是属性名属于symbol类型,就是独一无二的,可以保证不会与其他属性名冲突。

symbol函数还可以接收一个字符串参数,表示对symbol实例的描述。

let s = symbol()
console.log(typeof s) // "symbol"

let s1 = symbol('s1')
let s2 = symbol('s2')
console.log(s1) // symbol(s1)
console.log(s2) // symbol(s2)

注意:symbol函数的参数只是表示对当前实例的描述,因此相同参数的symbol的返回值是不相等的。

二.js数据类型检测的方法(一般有一下几种):

1.typeof:typeof一般用于检测基本数据类型,因为它检测引用数据类型都返回objcet

console.log(typeof 1) // "number"
console.log(typeof 'a') // "string"
console.log(typeof undefined) // "undefined"
console.log(typeof true) // "boolean"
console.log(typeof null) // "object"
console.log(typeof ) // "symbol"
function fun(){ }
console.log(typeof fun) // "function"

注意:typeof检测null也会返回object,这是js一直以来遗留的bug。用typeof检测function返回的是'function'。

2.instanceof 这个方法主要是用来准备的检测引用数据类型的(不能用来检测基本数据类型),用来检测构造函数的prototype属性是否出现在对象原型链中的任意位置。

let fun = function(){ }
fun instanceof function  //true
let obj ={ }
obj instanceof object //true
let arr = [ ]
arr instanceof array //true

曾今被面试官问过一道题 1 instanceof 返回的是什么? 当时给因为自身原因说了返回true,现在想想emmm…

1 instanceof number //false 
null instanceof object // false

instanceof运算符直接访问的变量的原始值,不会自动建立包装类。因此不能用来判断基本数据类型。

3.object.prototype.tostring()可以用来准备的检测所有数据类型。

object.prototype.tostring.call([])
// "object array"
object.prototype.tostring.call(1)
// "object number"
object.prototype.tostring.call(null)
// "object null"
object.prototype.tostring.call(undefined)
// "object undefined"
object.prototype.tostring.call({})
// "object object"
object.prototype.tostring.call(function add(){})
// "object function"
....

4.constructor通过检测类型在原型链中的constructor指向来返回布尔值。

let arr =[]
arr.constructor==array
// true
let fun = function(){}
fun.constructor==function
//true

注意:null和undefined是没有constructor属性的,可以用其他方法判断。

通过几这次的总结,对于js的数据类型,以及如何检测数据类型有了深刻的认识,下次面试不慌张~

以上就是详解javascript中的数据类型,以及检测数据类型的方法的详细内容,更多关于javascript 数据类型的资料请关注其它相关文章!