js 如何判断变量类型
自定义一些类型
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 如何判断变量类型的更多相关文章
- [JS]js中判断变量类型函数typeof的用法汇总[转]
1.作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串. 可能的字符串有:"number"."string"."boolean&q ...
- 16. js 判断变量类型,包括ES6 新类型Symbol
相信大家在开发中遇到需要判断变量类型的问题,js变量按存储类型可分为值类型和引用类型,值类型包括Undefined.String.Number.Boolean,引用类型包括object.Array.F ...
- JavaScript 变量克隆和判断变量类型
一.变量克隆 在js中经常会遇到将一个变量赋值给一个新的变量这种情况,这对于基本类型很容易去实现,直接通过等号赋值就可以了,对于引用类型就不能这样了.(注:像函数,正则也可以直接通过等号赋值) 这里我 ...
- Javascript 判断变量类型的陷阱 与 正确的处理方式
Javascript 由于各种各样的原因,在判断一个变量的数据类型方面一直存在着一些问题,其中最典型的问题恐怕就是 typeof null 会返回 object 了吧.因此在这里简单的总结一下判断数据 ...
- Js中判断变量存不存在的问题
前面写过jquery对象存在与否的判断.现在谈下Js中判断变量存不存在的问题. 如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行.注意,这种判断只要变量申明过, ...
- PHP判断变量类型和类型转换的三种方式
前言: PHP 在变量定义中不需要(不支持)明确的类型定义.变量类型是根据使用该变量的上下文所决定的.所以,在面对页码跳转.数值计算等严格的格式需求时,就要对变量进行类型转换. 举例如下: $foo ...
- php判断变量类型
php判断变量类型 一.总结 一句话总结: gettype()函数:gettype(1);返回的是integer is_array():is系列函数 1.PHP empty.isset.isnull的 ...
- JS 中对变量类型判断的几种方式
文章整理搬运,出处不详,如有侵犯,请联系~ 数据类型判断和数据类型转换代码工具 在 JS 中,有 5 种基本数据类型和 1 种复杂数据类型,基本数据类型有:Undefined, Null, Boo ...
- JS 中对变量类型的判断
总结:1. 一般简单的使用 typeof 或 instanceof 检测(这两种检测的不完全准确) 2. 完全准确的使用 原生js中的 Object.prototype.toStri ...
随机推荐
- python 列表,字典,元组,字符串,QuerySet之间的相互转换
1. 列表转换成字典list1 = ['key1','key2','key3']list2 = ['value1','value2'] dict1 = zip(list1,list2) # dict( ...
- jvm-learning-概述
JVM整体结构: java代码的执行流程 JVM的架构模型 public class StackStruTest { public static void main(String[] args) { ...
- Java 中怎么获取一份线程 dump 文件?
在 Linux 下,你可以通过命令 kill -3 PID (Java 进程的进程 ID)来获取 Java 应用的 dump 文件.在 Windows 下,你可以按下 Ctrl + Break 来获取 ...
- 并发场景下HashMap死循环导致CPU100%的问题
参考链接:并发场景下HashMap死循环导致CPU100%的问题
- Javascript Range对象的学习
Range对象有几个特别难理解的属性,这里学习总结下 Range.startOffset:返回一个表示 Range 起点在 startContainer 中的位置的数字.此属性的值与Range.sta ...
- 记录md的偏好设置
- 如何将Matlab中“模糊控制设计器”的隶属度函数导出图片(figure)
如何将Matlab中"模糊控制设计器"的隶属度函数导出图片(figure)详情参考matlab官方帮助手册:plotmf()函数https://www.mathworks.com/ ...
- [源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑
[源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑 目录 [源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑 1. 概述 1.1 温 ...
- HTML5 & CSS3 内容收集(1)
1. HTML发展历史介绍 2. 浏览器支持 2.1 新增标签支持 在html5 中新增了很多的标签,其中包括8个新增语义结构标签.header, section, footer, aside, na ...
- ES6-11学习笔记--Map
Map:一种新的数据结构 常用方法 遍历 应用场景 WeakMap 常用方法: let map = new Map() let obj = { name: '张三' } map.set(obj, ...