js判断数据类型的几种方式

typeof

  1. 对于基本类型,除 null 以外,均可以返回正确的结果。
  2. 对于引用类型,除 function 以外,一律返回 object 类型。
  3. 对于 null ,返回 object 类型。
  4. 对于 function 返回  function 类型。
typeof''; // string 有效
typeof1; // number 有效
typeofSymbol(); // symbol 有效
typeoftrue; //boolean 有效
typeofundefined; //undefined 有效
typeofnull; //object 无效
typeof[] ; //object 无效
typeofnewFunction(); // function 有效
typeofnewDate(); //object 无效
typeofnewRegExp(); //object 无效

Array.isArray()

只能辨别数组

console.log(Array.isArray([]))  //true

toString

toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。

对于 Object 对象,直接调用 toString()  就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

Object.prototype.toString.call('') ;   // [object String]
Object.prototype.toString.call(1) ;    // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(newFunction()) ; // [object Function]
Object.prototype.toString.call(newDate()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(newRegExp()) ; // [object RegExp]
Object.prototype.toString.call(newError()) ; // [object Error]
Object.prototype.toString.call(document) ; // [object HTMLDocument]
Object.prototype.toString.call(window) ; //[object global] window 是全局对象 global 的引用

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里巴巴开源大规模稀疏模型训练/预测引擎DeepRec

简介:经历6年时间,在各团队的努力下,阿里巴巴集团大规模稀疏模型训练/预测引擎DeepRec正式对外开源,助力开发者提升稀疏模型训练性能和效果。 作者 | 烟秋 来源 | 阿里技术公众号 经历6年时间,在各团队的努力下&#…

产学融合如何促进技术创新,英特尔打了个样

作者 | 宋慧 出品 | CSDN 经过多年的积累与扎实科研,中国的科学与技术水平正在达到和超越世界一线水平。这离不开中国有基数庞大的用户和应用场景,为科学界和工业界提供了将理论付诸实践的机会,反复打磨迭代,以提升技术指标。 作…

3大能力升级,云效+钉钉,让研发协作更「敏捷」

简介:你的团队是否面临如下问题:没有敏捷经验,不知道如何落地敏捷或者敏捷实施不规范?研发交付过程信息更新不及时,无法及时跟进交付结果?员工入职离职,多套账号权限管理难?缺乏交付…

阿里云张献涛:自主最强DPU神龙的秘诀

简介:读懂云计算,才能看清DPU热潮。 微信公众号搜索“弹性计算百晓生”,获取更多云计算知识。 如果细数最近火爆的科技概念,DPU必然位列其中。 这是英伟达一手捧红的新造富故事,是2021年SoC领域最热火朝天的创业赛道…

Gartner发布2022年新兴技术成熟度曲线,推动沉浸式、AI自动化发展

编辑 | 宋慧 供稿 | Gartner Gartner 2022年新兴技术成熟度曲线列出了25项值得关注的新兴技术,这些技术正在推动沉浸式体验的发展和扩展、加速人工智能(AI)自动化并优化技术人员交付。 Gartner研究副总裁Melissa Davis表示:“新兴…

阿里云张献涛:公共云正不断向外延伸,一云多态是未来趋势

简介:一云多态是公有云的未来趋势,包括产品的多形态、部署的多形态和生态的多形态。 编者按:2021年10月22日,在云栖大会《一云多形态部署最佳实践》分论坛,阿里巴巴集团研究员、阿里云弹性计算产品线负责人张献涛发表…

4种典型限流实践保障应用高可用|云效工程师指北

简介:4种典型限流实践保障应用高可用,本文总结了一份AHAS限流实践指南,如果你的系统有被恶意用户攻击的风险,或者系统中某个应用出现异常可能会造成雪崩效应,那么这篇文章会对你有所帮助。 大家好,我叫黄博…

超融合中国力量崛起,IDC2022年Q1报告出炉浪潮中国市场位列前三

国际数据公司(IDC)发布《2022Q1中国软件定义存储及超融合市场研究报告》,报告显示:2022年第一季度浪潮超融合销售额同比增长86.3%,近8倍于业内平均增速,市场份额跻身中国前三。 浪潮超融合在政府和金融行业…

阿里巴巴云原生大数据运维平台 SREWorks 正式开源

简介:阿里巴巴云原生大数据运维平台 SREWorks,沉淀了团队近10年经过内部业务锤炼的 SRE 工程实践,今天正式对外开源,秉承“数据化、智能化”运维思想,帮助运维行业更多的从业者采用“数智”思想做好高效运维。 作者 | …

css小技巧

当文字超出时用胜率号代替 <p>这是一段超出内容的话&#xff0c;必须要超出才会出现省略号</p> p{width: 200px;height: 20px;line-height: 20px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; }让文字的颜色为渐变 <p>我需要成为渐变色…

阿里云 VPC 内网性能测试最佳实践

简介&#xff1a;本文介绍了在阿里云 VPC 内网执行性能测试的方法。相较于传统的公网性能测试&#xff0c;VPC 内网性能测试完全在客户 VPC 环境进行&#xff0c;无需暴露服务到公网&#xff0c;安全性更高&#xff0c;灵活性更强。 作者:风起 背景 随着互联网的快速发展&am…

​在可视化大屏中轻松完成机器学习建模和调参应用实例

Streamlit 是一个开源 Python 库&#xff0c;可帮助开发人员为其系统创建交互式图形用户界面。它专为机器学习和数据科学家团队设计。使用 Streamlit&#xff0c;我们可以快速创建交互式 Web 应用程序并进行部署。前端工作对数据科学家来说并不重要&#xff0c;他们只想要一个小…

router的使用

路由和线路 路由router 表示当前项目全局的路由实例对象 跳转方法&#xff1a;push&#xff0c;replace&#xff0c;go&#xff0c;back 线路route 表示当前路由页面的信息对象 获取动态路由的参数&#xff1a;params router跳转的两种方式 js跳转叫[编程式跳转] <butto…

EventBridge 事件总线及 EDA 架构解析

简介&#xff1a;EventBridge 是事件驱动的具体落地产品&#xff0c;也是 EDA 的最佳实践方式。 作者&#xff1a;肯梦 作为 Gartner 定义的 10 大战略技术趋势之一&#xff0c;事件驱动架构&#xff08;EDA&#xff09;逐渐成为主流技术架构。根据 Gartner 的预估&#xff0…

开发者驱动的软件公司,如何赚取万亿美元?

【CSDN 编者按】在过去二十年中&#xff0c;诞生了两个价值数万亿美元的企业软件行业&#xff1a;SaaS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;软件和公有云。如今&#xff0c;第三个以开发者为核心的万亿美元软件浪潮正在来袭&#xff0c;企业该…

解决vue路由守卫报错信息

//在router文件中写入&#xff0c;修改报错信息 const originalPush VueRouter.prototype.push VueRouter.prototype.push function push(location, onResolve, onReject) {if (onResolve || onReject) {return originalPush.call(this, location, onResolve, onReject)}retu…

好云推荐官丨飞天加速之星怎样选择云服务器ECS?

编者按&#xff1a;本文来自“好云推荐官”活动的技术博主投稿&#xff0c;作者&#xff08;昵称天狼&#xff09;曾入选首届“飞天加速之星”&#xff0c;获得飞天人气奖。 ​你是否还在苦苦地寻找一家合适的云厂商&#xff0c;寻找合适的服务器来部署你开发的网站、程序&…

2022钉钉发布会|云钉低代码新模式、新能力、新机遇

简介&#xff1a;宜搭重磅发布酷应用工厂、连接器、AIFaaS扩展等新功能&#xff01; 3月22日&#xff0c;以“科技向实&#xff0c;万物生长”为主题的2022钉钉发布会在杭州举行。 阿里巴巴资深技术专家&#xff0c;钉钉宜搭创始人叶周全出席发布会&#xff0c;并在 “人人都…

最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控

简介&#xff1a;SpringBoot 微服务的开发、发布与部署只占其生命周期的一小部分&#xff0c;应用和系统运维才是重中之重。而运维过程中&#xff0c;监控工作更是占据重要位置。那么&#xff0c;为了对系统的状态进行持续地观测&#xff0c;面向Spring Boot应用我们该如何快速…

vue知识总结

vue 定义 以数据驱动视图的渐进式&#xff08;轻量级&#xff09;mvvm框架 响应式原理&#xff1a;Object.defineProperty 指令 html&#xff0c;text&#xff0c;show&#xff0c;if&#xff0c;for&#xff0c;model&#xff0c;slot&#xff0c;once&#xff0c;bind&am…