详解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 confirm选择判断
Oct 18 Javascript
Javascript 强制类型转换函数
May 17 Javascript
js 实现菜单上下显示附效果图
Nov 21 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
Apr 07 Javascript
angular route中使用resolve在uglify压缩后问题解决
Sep 21 Javascript
js 中获取制定的cook信息实现方法
Nov 19 Javascript
canvas红包照片实例分享
Feb 28 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
小程序瀑布流组件实现翻页与图片懒加载
May 19 Javascript
vue data对象重新赋值无效(未更改)的解决方式
Jul 24 Javascript
swiper实现导航滚动效果
Dec 13 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
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
xml和web特殊字符
2009/04/28 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
python函数返回多个值的示例方法
2013/12/04 Python
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
python让函数不返回结果的方法
2020/06/22 Python
Reformation官网:美国女装品牌
2018/09/14 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
TCP/IP的分层模型
2013/10/27 面试题
县优秀教师事迹材料
2014/01/31 职场文书
村干部承诺书
2014/03/28 职场文书
工作总结与自我评价
2014/09/18 职场文书
关于感谢信的范文
2015/01/23 职场文书
中学生自我评价范文
2015/03/03 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL