详解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 相关文章推荐
JavaScript EasyPager 分页函数
May 25 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
全面了解函数声明与函数表达式、变量提升
Aug 09 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
vue-cli webpack2项目打包优化分享
Feb 07 Javascript
vue.js input框之间赋值方法
Aug 24 Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 Javascript
JSON基本语法及与JavaScript的异同实例分析
Jan 04 Javascript
layui 弹出层值回传解决方式
Nov 14 Javascript
Vue如何基于es6导入外部js文件
May 15 Javascript
node.js通过Sequelize 连接MySQL的方法
Dec 28 Javascript
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完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
php 图片上添加透明度渐变的效果
2009/06/29 PHP
php str_pad 函数用法简介
2009/07/11 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
Javascript之文件操作
2007/03/07 Javascript
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
jQuery基础框架浅入剖析
2012/12/27 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
微信小程序支付及退款流程详解
2017/11/30 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
python动态监控日志内容的示例
2014/02/16 Python
python实现将文本转换成语音的方法
2015/05/28 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
优秀毕业生事迹材料
2014/02/12 职场文书
聚美优品的广告词
2014/03/14 职场文书
小学教师自我评价
2015/03/04 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
答谢酒会主持词
2015/07/02 职场文书
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server