自定义一些类型


const boolean = true
const string = '这是一个字符串'
const number = 1
const array = []
const object = { name: '张三' }
const functionType = function () {}
const nan = NaN
const undefinedType = undefined
const nullType = null
const Reg = new RegExp()
const set = new Set()
const map = new Map()
const date = new Date()
const math = Math

1、typeof


console.log(typeof boolean); // boolean
console.log(typeof string); // string
console.log(typeof number); // number
console.log(typeof array); // object
console.log(typeof object); // object
console.log(typeof functionType); // function
console.log(typeof nan); // number
console.log(typeof undefinedType); // undefined
console.log(typeof nullType); // object
console.log(typeof Reg); // object
console.log(typeof set); // object
console.log(typeof map); // object
console.log(typeof date); // object
console.log(typeof math); // object
console.log(typeof window); // object
console.log(typeof document); // object

缺点:typeof只能识别boolean、string、number、object、function

2、instanceof


console.log(boolean instanceof Boolean); // false
console.log(string instanceof String); // false
console.log(number instanceof Number); // false
console.log(array instanceof Array); // true
console.log(object instanceof Object); // true
console.log(functionType instanceof Function); // true
console.log(nan instanceof Number); // false

缺点:instanceof不能能识别基本类型和null、undefined

3、constructor

缺点:constructor的指向可能会被改变,且null,和undefined 没有constructor

4、Obeject.prototype.toString.call()


console.log(Object.prototype.toString.call(boolean)); // [object Boolean]
console.log(Object.prototype.toString.call(string)); // [object String]
console.log(Object.prototype.toString.call(number)); // [object Number]
console.log(Object.prototype.toString.call(array)); // [object Array]
console.log(Object.prototype.toString.call(object)); // [object Object]
console.log(Object.prototype.toString.call(functionType)); // [object Function]
console.log(Object.prototype.toString.call(nan)); // [object Number]
console.log(Object.prototype.toString.call(undefinedType)); // [object Undefined]
console.log(Object.prototype.toString.call(nullType)); // [object Null]
console.log(Object.prototype.toString.call(Reg)); // [object RegExp]
console.log(Object.prototype.toString.call(set)); // [object Set]
console.log(Object.prototype.toString.call(map)); // [object Map]
console.log(Object.prototype.toString.call(date)); // [object Date]
console.log(Object.prototype.toString.call(math)); // [object Math]
console.log(Object.prototype.toString.call(window)); // [object Window]
console.log(Object.prototype.toString.call(document)); // [object HTMLDocument]

大部分类型还是可以识别的

缺点:Obeject.prototype.toString.call()不能能识别非原生构造函数的构造函数名

js 如何判断变量类型的更多相关文章

  1. [JS]js中判断变量类型函数typeof的用法汇总[转]

    1.作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串.  可能的字符串有:"number"."string"."boolean&q ...

  2. 16. js 判断变量类型,包括ES6 新类型Symbol

    相信大家在开发中遇到需要判断变量类型的问题,js变量按存储类型可分为值类型和引用类型,值类型包括Undefined.String.Number.Boolean,引用类型包括object.Array.F ...

  3. JavaScript 变量克隆和判断变量类型

    一.变量克隆 在js中经常会遇到将一个变量赋值给一个新的变量这种情况,这对于基本类型很容易去实现,直接通过等号赋值就可以了,对于引用类型就不能这样了.(注:像函数,正则也可以直接通过等号赋值) 这里我 ...

  4. Javascript 判断变量类型的陷阱 与 正确的处理方式

    Javascript 由于各种各样的原因,在判断一个变量的数据类型方面一直存在着一些问题,其中最典型的问题恐怕就是 typeof null 会返回 object 了吧.因此在这里简单的总结一下判断数据 ...

  5. Js中判断变量存不存在的问题

    前面写过jquery对象存在与否的判断.现在谈下Js中判断变量存不存在的问题. 如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行.注意,这种判断只要变量申明过, ...

  6. PHP判断变量类型和类型转换的三种方式

    前言: PHP 在变量定义中不需要(不支持)明确的类型定义.变量类型是根据使用该变量的上下文所决定的.所以,在面对页码跳转.数值计算等严格的格式需求时,就要对变量进行类型转换. 举例如下: $foo ...

  7. php判断变量类型

    php判断变量类型 一.总结 一句话总结: gettype()函数:gettype(1);返回的是integer is_array():is系列函数 1.PHP empty.isset.isnull的 ...

  8. JS 中对变量类型判断的几种方式

    文章整理搬运,出处不详,如有侵犯,请联系~   数据类型判断和数据类型转换代码工具 在 JS 中,有 5 种基本数据类型和 1 种复杂数据类型,基本数据类型有:Undefined, Null, Boo ...

  9. JS 中对变量类型的判断

    总结:1. 一般简单的使用 typeof 或 instanceof 检测(这两种检测的不完全准确)          2. 完全准确的使用 原生js中的 Object.prototype.toStri ...

随机推荐

  1. 【Java面试宝典】你们线上应用的 JVM 参数有哪些?

    -server-Xms6000M-Xmx6000M-Xmn500M-XX:PermSize=500M-XX:MaxPermSize=500M-XX:SurvivorRatio=65536-XX:Max ...

  2. Kafka 判断一个节点是否还活着有那两个条件?

    (1)节点必须可以维护和 ZooKeeper 的连接,Zookeeper 通过心跳机制检查每 个节点的连接 (2)如果节点是个 follower,他必须能及时的同步 leader 的写操作,延时不能太 ...

  3. MariaDB CAST语法

    Syntax CAST(expr AS type) Description CAST()函数采用一种类型的值,并产生另一种类型的值,类似于CONVERT函数. CAST()和CONVERT()之间的主 ...

  4. 学习Apache(六)

    Apache 是一款使用量排名第一的 web 服务器,LAMP 中的 A 指的就是它.由于其开源.稳定.安全等特性而被广泛使用.下边记录了使用 Apache 以来经常用到的功能,做此梳理,作为日常运维 ...

  5. Spring的@Enable*注解的工作原理

    转自:https://blog.csdn.net/chengqiuming/article/details/81586948 一 列举几个@Enable*注解的功能 @EnableAspectJAut ...

  6. 11_滞后补偿器_Lag Compensator_Matlab_Simulink

    下图中左边没有补偿器的稳态误差,右边是有只猴补偿器的稳态误差,H(s)为滞后补偿器的原因是H(s)bode图的相位图是负的 其中黄线是没有滞后补偿器的,蓝线是滞后补偿器中p = 1 ,q = 9的曲线 ...

  7. 网络安全—xss

    1.xss的攻击原理 需要了解 Http cookie ajax,Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码.比如 ...

  8. python-验证6174猜想

    [题目描述]1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终 ...

  9. python爬虫---爬取网易云音乐

    代码: import requests from lxml import etree text = requests.get("https://music.163.com/discover/ ...

  10. java中finally有什么意义呢,在现实中?举例

    马克-to-win: finally有什么意义呢,在现实中?比如你开了一个流处理文件,可能没开成功,或开成功了,但后面的操作失败了,但不管你怎么样,你必须在一个地儿把它关闭,那就是finally块儿. ...