详解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 相关文章推荐
基于jQuery架构javascript基础体系
Jan 01 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
Apr 10 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
Jan 27 Javascript
jQuery+Ajax实现限制查询间隔的方法
Jun 07 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
Jun 24 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
Nov 15 Javascript
Node.js连接mongodb实例代码
Jun 06 Javascript
原生JS+Canvas实现五子棋游戏实例
Jun 19 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
详解Vue源码中一些util函数
Apr 24 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
Nov 16 Javascript
JS高级程序设计之class继承重点详解
Jul 07 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
PHP垃圾回收机制简单说明
2010/07/22 PHP
php后门URL的防范
2013/11/12 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
2015/02/03 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
JS面向对象编程详解
2016/03/06 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
Python Serial串口基本操作(收发数据)
2020/11/06 Python
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
建筑人员岗位职责
2013/12/25 职场文书
临床医师专业个人自我评价
2014/01/08 职场文书
前处理组长岗位职责
2014/03/01 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
企业文化宣传标语
2014/06/09 职场文书
爱国口号
2014/06/19 职场文书
大学军训的体会
2014/11/08 职场文书
小学科学教学计划
2015/01/21 职场文书
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技