js 判断变量类型(完整版),包括ES6 新类型Symbol

2023-11-09

欢迎来到Altaba的博客...

相信大家在开发中遇到需要判断变量类型的问题,js变量按存储类型可分为值类型和引用类型,值类型包括Undefined、String、Number、Boolean,引用类型包括object、Array、Function,具体差距请参阅本人另一博客

直接上辨别类型的封装函数

function varType(n) {
        var typeStr = Object.prototype.toString.call(n);
        //var typeOfName = (typeof n);
        var typeName = '';
        switch (typeStr){
            case '[object String]':
                typeName = 'string';
                break;
            case '[object Number]':
                typeName = 'number';
                break;
            case '[object Boolean]':
                typeName = 'boolean';
                break;
            case '[object Undefined]':
                typeName = 'undefined';
                break;

            case '[object Object]':
                typeName = 'object';
                break;
            case '[object Array]':
                typeName = 'array';
                break;
            case '[object Null]':
                typeName = 'null';
                break;
            case '[object RegExp]':
                typeName = 'RegExp';
                break;

            case '[object Symbol]':
                typeName = 'symbol';
                break;
            case '[object JSON]':
                typeName = 'json';
                break;
            case '[object Math]':
                typeName = 'math';
                break;

            default:
                typeName = 'object';
        }

        return typeName;
    };


    console.log(varType("1"));
    console.log(varType(1));
    console.log(varType({}));
    console.log(varType([]));
    console.log(varType(function () {}));
    console.log(varType(null));
    console.log(varType(undefined));
    console.log(varType(true));
    console.log(varType(NaN));
    console.log(varType(Symbol()));

    console.log(varType(JSON));
    console.log(varType(Date));
    console.log(varType(Math));
    console.log(varType(RegExp()));

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js 判断变量类型(完整版),包括ES6 新类型Symbol 的相关文章

随机推荐

  • ajax无法获取null,Ajax未捕获TypeError:无法读取属性'点击'null

    我无法找出错误的原因 我不断收到Uncaught TypeError Cannot read property click of null错误 我确实在按钮中定义了 product btn类 Ajax未捕获TypeError 无法读取属性
  • 甲骨文 CleanCache 将从 Linux 内核中清除;GNU Parallel 20 周年;Openfire 4.6.7 发布

    整理 宋彤彤 责编 屠敏 开源吞噬世界的趋势下 借助开源软件 基于开源协议 任何人都可以得到项目的源代码 加以学习 修改 甚至是重新分发 关注 开源日报 一文速览国内外今日的开源大事件吧 一分钟速览新闻点 甲骨文研发的 CleanCache
  • java 常见的异常错误代码

    java异常错误代码 1 应当谨慎地使用那些只有HTTP1 1支持的状态代码 因为许多浏览器还只能够支持HTTP1 0 如果你使用了 HTTP1 1特有的状态代码 最好能够检查一下请求的HTTP版本号 状态代码 状态信息 含义 2 100错
  • Java 中有哪些类型的流?

    Java 中的流 Stream 分为两种类型 字节流和字符流 字节流 Byte Stream 字节流可以处理任何类型的数据 但是它们是以字节为单位进行操作的 Java 中提供了两种字节流 InputStream 和 OutputStream
  • 区块链学习路线图!

    分享关于区块链的学习的大致方向和路线
  • [519]matplotlib(二)

    3D 散点图绘制 scatter from mpl toolkits mplot3d import Axes3D import numpy as np from matplotlib import pyplot as plt 生成3D示例数
  • 虚拟化技术基础汇总(特全,初学者值得一看)

    虚拟化意味着应用程序可以使用一个资源 而不必担心它驻留在哪里 技术接口是什么 它是如何实现的 它使用的平台以及它有多少可用 里克 F 范德兰斯 目录 一 什么是虚拟化 1 虚拟化概念 2 虚拟化的类型 服务器虚拟化 网络虚拟化 桌面虚拟化
  • Pandas--DataFrame修改值

    pandas要修改值先需要了解DataFrame的一些知识 此处参照的是pandas的官方文档 When setting values in a pandas object care must be taken to avoid what
  • STM32学习笔记

    STM32笔记 STM32笔记 ADC TIM定时器 定时中断基本结构 代码配置 PWM PWM初始化 EXTI外部中断 NVIC基本结构 EXIT简介 代码配置 GPIO输出 单独操作输出数据寄存器的某一位的方法 GPIO8种模式 代码操
  • wireshark:界面介绍

    菜单栏 文件 打开文件集 保存包 导出HTTP对象 编辑 清除所有标记的包 忽略包和时间属性 视图 查看 隐藏工具栏和面板 编辑Time列 重设颜色 跳转 捕获 分析 创建显示过滤器宏 查看启用协议 保存关注解码 统计 创建图表并打开各种协
  • 网络空间安全进入动态防御时代

    现代计算机网络中包括各种各样的设备和软件 这些设备和软件存在着大量的未知和已知漏洞 漏洞是安全问题的根本 在漏洞面前 攻守双方并不平等 一个弱点被黑客利用 最终可以导致危险在整个网络扩散 漏洞具有的高威胁性 突发性 高破坏性 大规模性的主要
  • Introduction to Data-Centric AI 以数据为中心的人工智能导论

    文章目录 前言 一 Data Centric AI vs Model Centric AI 二 Label Errors and Confident Learning 1 引入库 2 读入数据 总结 前言 本博客笔记来源于MIT的课程 In
  • keil5安装出现error:A1023E等信息

    这是因为在安装的时候没有将环境变量配置好 应该配置如下
  • 国家大力发展集成电路,是否意味着微电子行业在中国前景可以?

    集成电路是信息化 数字化的基石 是全球信息产业的基础 用于通信 安防 军事 工业 交通 消费电子等领域 现在的消费电子 互联网 数字图像 网络通信 云计算 大数据 人工智能发展都得靠它 而在国家安全 经济 日常生活中是不可或缺的 如果是这种
  • 前端笔试题

    目录 1 选择器的优先级 从上往下依次降低 是 2 下述有关 border none 以及 border 0 的区别 描述错误的是 3 关于a元素 以下说法正确的有 4 History对象的属性或方法描述正确的是 5 在HTML5中 为in
  • Matlab中的点数据生成图

    目录 简单的背景介绍 尝试plot3 构造矩阵 遍历填充 无优化版遍历填充 优化后的遍历填充 简单的背景介绍 今天蠢师弟用comsol导出了一个模拟数据 用matlab打开一看是一个数据长度 189739 3 189739 3 189739
  • 嵌入式物联网毕业设计选题智能图像识别项目-stm32mp157 linux开发板

    stm32mp157开发板FS MP1A是华清远见自主研发的一款高品质 高性价比的Linux 单片机二合一的嵌入式教学级开发板 开发板搭载ST的STM32MP157高性能微处理器 集成2个Cortex A7核和1个Cortex M4 核 A
  • R语言第八次课堂小测 rattle的应用(包括rattle的安装)

    题目 安装rattle 并使用rattle 用三种聚类方法对鸢尾花数据集进行聚类 步骤一 修改镜像源 首先 在Rstudio上打开如下界面 进入后 找到packages 再点击change 下图是已经更换了的截图 选择中国的任意一个镜像 最
  • ./configure之后报错

    首先要看报的错误是什么 一般从第一条开始解决 因为有可能下面的错误是由上面的导致的
  • js 判断变量类型(完整版),包括ES6 新类型Symbol

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