详解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 跨域访问解决方案
Feb 14 Javascript
Extjs 几个方法的讨论
Jan 28 Javascript
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
Mar 01 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
Feb 26 Javascript
javascript框架设计之类工厂
Jun 23 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
bootstrap日历插件datetimepicker使用方法
Dec 14 Javascript
深入理解Node.js中的进程管理
Mar 13 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
Jul 17 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
Sep 11 Javascript
在vue 中使用 less的教程详解
Sep 26 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新手上路(二)
2006/10/09 PHP
php的access操作类
2008/04/09 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python中的__slots__使用示例
2015/02/26 Python
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
python pandas修改列属性的方法详解
2018/06/09 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python异步存储数据详解
2019/03/19 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
怎样声明接口
2014/09/19 面试题
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
公司培训欢迎词
2014/01/10 职场文书
七年级生物教学反思
2014/01/30 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
优秀员工推荐材料
2014/12/20 职场文书
68句权威创业名言
2019/08/26 职场文书
导游词之淮安明祖陵
2019/11/25 职场文书
Python字符串格式化方式
2022/04/07 Python