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

javascript类型判断最佳实践的更多相关文章

  1. javascript编程的最佳实践推荐

    推荐的javascript编程的最佳实践,摘要记录在这里: 可维护的代码保证代码的性能部署代码 1 可维护的代码1.1什么是维护的代码:可理解性——其他人可以接手代码并理解它的意图和一般途径,而无需原 ...

  2. (译) 《Javascript 24条最佳实践》

    (摘录) <Javascript 24条最佳实践> 自己一直偏向于实用主义,不是学院派,不是学究派,只讲究把东西能够很好的做出来,但经过一段时间的开发工作当自己总结出来一些东西时,觉得挺有 ...

  3. 【转】超实用的JavaScript技巧及最佳实践

    众所周知,JavaScript是一门非常流行的编程语言,开发者用它不仅可以开发出炫丽的Web程序,还可以用它来开发一些移动应用程序(如PhoneGap或Appcelerator),它还有一些服务端实现 ...

  4. 超实用的JavaScript技巧及最佳实践

    众所周知,JavaScript是一门非常流行的编程语言,开发者用它不仅可以开发出炫丽的Web程序,还可以用它来开发一些移动应用程序(如PhoneGap或Appcelerator),它还有一些服务端实现 ...

  5. 超实用的JavaScript技巧及最佳实践(上)

    在这篇文章中,作者将会向大家分享JavaScript开发的小技巧.最佳实践等非常实用的内容,不管你是前端开发者还是服务端开发者,都应该来看看这些小技巧,它们绝对会让你受益的. 文中所提供的代码片段都已 ...

  6. JavaScript 类型判断 —— typeof 以及 instanceof 中的陷阱

    JavaScript中基本类型包含Undefined.Null.Boolean.Number.String以及Object引用类型.基本类型可以通过typeof来进行检测,对象类型可以通过instan ...

  7. DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)

    这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...

  8. JavaScript Web 应用最佳实践分析

    [编者按]本文作者为 Mathias Schäfer,旨在回顾在客户端大量使用JavaScript 的最佳 Web应用实践.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 对笔者来说,Jav ...

  9. JavaScript类型判断详解(Object.prototype.toString.call()方法进行数据类型的可靠判断)

    前言 在编写一些类库中,我们经常需要判断一些未知的用户的输入和配置,故而需要进行一系列的类型判断.故而总结下JS是如何进行类型判断的 typeof typeof操作符返回一个字符串,表示未经计算的操作 ...

随机推荐

  1. docker-Overlay原生网络

    节点1/键值存储:192.168.50.130 :192.168.50.131 1.下载Consul二进制包并启动 wget https://releases.hashicorp.com/consul ...

  2. oracle建表详细信息

    一张用户表 -- Create table create table OA_DM.DM_GY_USER ( ), username ) not null, loginname ) not null, ...

  3. Linux下安装Jenkins并且发布.net core

    一,基础环境 1,操作系统:CentOS 7.3 2,Docker version 18.09.6 docker安装参考:https://www.cnblogs.com/liuxiaoji/p/110 ...

  4. TCP/IP协议栈各个层次及分别的功能

    网络接口层:这是协议栈的最低层,对应OSI的物理层和数据链路层,主要完成数据帧的实际发送和接收.网络层:处理分组在网络中的活动,例如路由选择和转发等,这一层主要包括IP协议.ARP.ICMP协议等.传 ...

  5. 修改Vue中的 v-html 内的元素无效问题

    其原因就是在 style 样式中没有去处scoped 因为 v-html 会把内容当成子组件,而scoped 会在本身的组件中起作用

  6. Spring的核心jar包

    Spring的主要jar包 四个核心jar包:beans.context.core.expression Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现Spring ...

  7. 【2】Zookeeper安装

    一.环境准备 Linux操作系统 Java运行环境(1.6或以上) 服务器列表: 配置主机名映射. vi /etc/hosts ##添加如下内容 168.5.7.75 server1 168.5.7. ...

  8. 目标检测之车辆行人(darknet版yolov3)

    序言      自动驾驶是目前非常有前景的行业,而视觉感知作为自动驾驶中的“眼睛”,有着非常重要的地位和作用.为了能有效地识别到行驶在路上的动态目标,如汽车.行人等,我们需要提前对这些目标的进行训练, ...

  9. deep_learning_Function_numpy_random.normal()

    numpy常用函数之random.normal函数 np.random.normal(loc=0.0, scale=1.0, size=None) 作用:   生成高斯分布的概率密度随机数 loc:f ...

  10. windows消息的循环机制

    首先来了解几个基本概念: 消息:在了解什么是消息先来了解什么是事件.事件可分为几种,由输入设备触发的,比如鼠标键盘等等.由窗体控件触发的,比如button控件,file菜单等.还有就是来自Window ...