详解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 剪切板的用法(clipboardData.setData)与js match函数介绍
Nov 19 Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 Javascript
javascript 对象数组根据对象object key的值排序
Mar 09 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
jQuery隐藏和显示效果实现
Apr 06 Javascript
详解Bootstrap插件
Apr 25 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
前端JS面试中常见的算法问题总结
Dec 23 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
vue项目中添加单元测试的方法
Jul 21 Javascript
解决vue scoped html样式无效的问题
Oct 24 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
新52大事件
2020/03/03 欧美动漫
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
PHP生成器简单实例
2015/05/13 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
大学生开西餐厅创业计划书
2014/02/01 职场文书
企业内部培训方案
2014/02/04 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
初中生评语大全
2014/04/24 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
写给医生的感谢信
2015/01/22 职场文书
python not运算符的实例用法
2021/06/30 Python
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js