javascript有8种数据类型

值类型

  1. Number
  2. Null
  3. Undefined
  4. String
  5. Symbol
  6. Boolean
  7. BigInt

引用类型

  1. Object
  2. Array
  3. Function

判断数据类型有以下4种判断方法

第一种方式:   typeof

 typeof null   ---> "object"

 typeof undefined  ---> "undefined"

 typeof true | false  ---> 'boolean'

 typeof     ---> 'number'

 typeof "" ---> 'string'

 typeof { name : ''} | []  ---> 'object'

 typeof Symbol    ---> 'symbol'

 typeof ()=>{}       ---> 'function'

 typeof void       ---> 'undefined'

第二种方式  instanceof  但是这种方式只适合判断object类型

instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上

详细介绍请看这里:javascript中的instanceof运算符

比如 :
var arr = [] ;
arr instanceof Array ---> true
null instanceof Object ---> false
[function] instanceof Object | Function --> true

第三种方式  Object.prototype.toString.call()   这种方式可以将全部的数据类型检测出来 也是 推荐的方式

因为toString是Object的原型方法, 而 Array Function 等都是Object的实例。都重写了toString 方法。返回的是类型的字符串

 Object.prototype.toString.call(null)  --->  [object Null]

 Object.prototupe.toString.call(undefined)  ---> [object Undefined]

 Object.prototype.toString.call(123)  ---> [object Number]

 Object.prototype.toString.call(true) ---> [object Boolean]

 Object.prototype.toString.call('123') ---> [object String]

 Object.prototype.toString.call({})    ---> [object Object]

 Object.prototype.toString.call([])    ---> [object Array]

 Object.prototype.toString.call(Math) ---> [object Math]

 Object.prototype.toString.call(function(){}) ---> [object Function]

 Objdec.prototype.toString.call(new Date)  ---> [object Date]

 Object.prototype.toString.call(Symbol())   ---> [object Symbol]

 第四种方式: constructor  判断对象的构造函。

  1.  null 是js 原型链的起点,没有构造函数

  2. undefined 没有构造函数

  3. [].constructor  === Array  ---> true

  4. [string].constructor === String

  5. [object].constructor === object

  6. [number].constructor === Number

  7. [symbol].constructor === Symbol

  8. [function].constructor === Function

  9. [new Date].constructor === Date

  10. [RegExp].constructor === RegExp

最新文章

  1. Android总结之链式调用(方法链)
  2. C语言中关于POW在不同状态下四舍五入的解决方法
  3. DedeCms文档关键词替换,优先替换长尾关键词
  4. opengl典型例程立方体投影与地图绘制
  5. ftp 530 This FTP serveris anonymous only,
  6. 将Xml字符串转换成(DataTable || DataSet || XML)对象
  7. Oracle11g客户端安装及plsql配置
  8. PL/SQL Developer StringBuffer 专用复制
  9. iOS开发--XMPPFramework--用户登录(三)
  10. harbor在谷歌云上搭建 日志
  11. 关于MongoDB 固定集合(capped collection)的知识梳理
  12. 吴恩达机器学习笔记21-正则化线性回归(Regularized Linear Regression)
  13. nginx之访问控制http_access_module与http_auth_basic_module
  14. Linux学习笔记:使用prompt关闭ftp中mget和mput的确认提醒
  15. zepto和jquery关于获取css样式的试用差别
  16. 【wireshark】插件开发(五):C插件
  17. 强化学习算法DQN
  18. [转]Excel 工作表保护密码移除
  19. [转] Hadoop管理员的十个最佳实践
  20. URLconf+MTV:Django眼中的MVC

热门文章

  1. Linux就该这么学——新手必须掌握的命令之常用的系统工作命令
  2. vue配置外放generate-asset-webpack-plugin
  3. python项目内import其他内部package的模块的正确方法
  4. go 拼接sql
  5. QObject::connect可以对不继承QObject的类也使用信号槽
  6. vs2017 不能加载.vdproj
  7. 【原创】大叔经验分享(63)kudu vs parquet
  8. python lambda表达式的两种用处
  9. vue +echarts树状图
  10. [转]DELL PERC 系列阵列卡选型和用法指南