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