详解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基本对象
Jan 11 Javascript
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
jquery+css实现动感的图片切换效果
Nov 25 Javascript
JavaScript学习笔记之创建对象
Mar 25 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
Aug 01 Javascript
AngularJS变量及过滤器Filter用法分析
Nov 22 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
Jan 05 Javascript
JS中静态页面实现微信分享功能
Feb 06 Javascript
AngularJS实现动态切换样式的方法分析
Jun 26 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
详解element-ui 表单校验 Rules 配置 常用黑科技
Jul 11 Javascript
vue中是怎样监听数组变化的
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
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
tornado框架blog模块分析与使用
2013/11/21 Python
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
Python常见字典内建函数用法示例
2018/05/14 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
python将数据插入数据库的代码分享
2020/08/16 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
班主任班级寄语大全
2014/04/04 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书