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


Posted in Javascript onSeptember 17, 2020

一.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 数据类型的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
Jun 19 Javascript
javascript中数组的冒泡排序使用示例
Dec 18 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
JavaScript对Cookie进行读写操作实例
Jul 25 Javascript
基于jQuery实现的QQ表情插件
Aug 25 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
微信小程序 数据遍历的实现
Apr 05 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
Aug 16 Javascript
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 Javascript
解决vue数组中对象属性变化页面不渲染问题
Aug 09 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 Javascript
vue实力踩坑之push当前页无效
Apr 10 Vue.js
JavaScript编码小技巧分享
Sep 17 #Javascript
如何利用node转发请求详解
Sep 17 #Javascript
前端性能优化建议
Sep 17 #Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 #Javascript
JavaScript中如何调用Java方法
Sep 16 #Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 #Javascript
Vue父子组件传值的一些坑
Sep 16 #Javascript
You might like
php 代码优化之经典示例
2011/03/24 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
php创建图像具体步骤
2017/03/13 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
js中less常用的方法小结
2017/08/09 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
python中怎么表示空值
2020/06/19 Python
Python远程方法调用实现过程解析
2020/07/28 Python
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
师范生自荐信
2013/10/27 职场文书
团员的自我评价
2013/12/01 职场文书
应届大学生自荐信
2013/12/05 职场文书
初中校园之声广播稿
2014/01/15 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
小学生作文批改评语
2014/12/25 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL