详解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 相关文章推荐
单独使用CKFinder选择图片的方法
Aug 21 Javascript
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 Javascript
alert中断settimeout计时功能
Jul 26 Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
Node.js 异步编程之 Callback介绍(一)
Mar 30 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
Nov 29 Javascript
JavaScript动态创建div等元素实例讲解
Jan 06 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
Nov 10 Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 Javascript
详解VUE中的插值( Interpolation)语法
Oct 18 Javascript
Vue如何循环提取对象数组中的值
Nov 18 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简单静态页生成过程
2008/03/27 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
高中毕业生个人自我鉴定
2013/11/24 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
2014年人事科工作总结
2014/11/19 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python