js 面试 1判断变量是否是数组 2 检测数据类型方法

1 是否是数组

1) typeof 检测数据类型运算符

        优点:使用简单

        缺点:只能检测基本类型(除null外)

      console.log(typeof(10)) //Number

      console.log(typeof(false)) //boolean

      console.log(typeof('hello')) //string

      console.log(typeof([])) // object

      console.log(typeof(function(){})) //function

      console.log(typeof({})) //object

      console.log(typeof(undefined)) //undefined

      console.log(typeof(null)) //object

  2) instanceof 检测某个实例是否属于这个类

        优点:可以正确判断对象类型(引用类型),内部运行机制是原型链上能否找到这个类型的原型。

        缺点:不能正常判断基本类型 并且 不能跨iframe

    console.log(100 instanceof Number) //false

    console.log('100' instanceof String) //false

    console.log(false instanceof Boolean) //false

    console.log({} instanceof Object) //true

    console.log(function(){} instanceof Function) //true

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

    console.log(/^$/ instanceof  RegExp) //true

    console.log(/^$/ instanceof   Object) //true

    前两种比较常用

    3) constructor 

        优点:基本能检测所有类型(除了null和undefined)

        缺点:constructor容易被修改,也不能跨iframe

      和instanceof很相似,也能检测出是基本类型,数组,正则。

      但constructor检测正则 === Object 检测不出

      console.log((10).constructor === Number) //true

      console.log(([]).constructor ===  Array) //true

      console.log((function(){}).constructor ===  Function) //true

      console.log(({}).constructor ===  Object) //true

      console.log(/^$/.constructor === RegExp) //true

      console.log(/^$/.constructor === Object) //false

    4)  Object.prototype.toString.call() 检测数据类型

        优点:能检测出所有类型

        缺点:在iE6下,undefined和null均为Obj

        获取Object原型上的toString方法,让方法执行,并且改变方法中this关键字指向。

        let monitor = Object.prototype.toString;

        console.log(monitor.call(1)) //[object Number]

        console.log(monitor.call('hello')) //[object String]

        console.log(monitor.call(null)) //[object null]

        console.log(monitor.call(undefined)) //[object undefined]

        console.log(monitor.call(function(){})) //[object Function]

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

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

相关文章

【Python】requests库的介绍及用法

目录 1、应用场景 2、requests-三方库 1、应用场景 Python中的requests库被广泛应用在需要发送HTTP请求的场景中。以下列举了一些主要的应用场景: API调用: 许多服务提供了API接口,我们可以使用requests库发送GET、POST、PUT、DELETE等请…

vue使用gitshot生成gif

vue使用gitshot生成gif 问题背景 本文将介绍vue中使用gitshot生成gif。 问题分析 解决思路: 使用input组件上传一个视频,获取视频文件后用一个video组件进行播放,播放过程进行截图生成图片数组。 demo演示上传一个视频,然后生…

如何使用Docker部署IT-Tools并结合内网穿透实现公网访问本地工具箱服务

作为程序员,在日常工作中,需要借助一些工具来提高我们工作效率,IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能,使开发者能以更高效方式完成任务。经由IT-Tools,开发人员能轻松应对各类技术挑战&…

C++之数组

1,概述 所谓数组,就是一个集合,里面存放了相同类型的数据元素 特点1:数组中没干过数据元素都是相同的数据类型 特点2:数组都是连续存放位置组成的 2,一维数组 2.1 一维数组的定义 一维数组定义有三种…

Leetcode583. 两个字符串的删除操作 -代码随想录

题目&#xff1a; 代码(首刷自解 2024年2月29日&#xff09;&#xff1a; class Solution { public:// 动态规划 好像和找最长公共子序列一样&#xff1f;int minDistance(string word1, string word2) {int sz1 word1.size();int sz2 word2.size();// dp initvector<vec…

SD-WAN技术:优化国内外服务器访问的关键

在全球化的商业环境中&#xff0c;企业经常需要在国内访问国外的服务器。然而&#xff0c;由于地理位置和网络架构的限制&#xff0c;这种跨国访问往往会遇到速度慢、延迟高等问题。SD-WAN&#xff08;软件定义广域网&#xff09;技术的兴起&#xff0c;为企业提供了一种新的解…

八股文打卡day24——数据库(1)

面试题&#xff1a;左连接和右连接的区别&#xff1f; 我的回答&#xff1a; 左连接的SQL语句是&#xff1a;左表 left join 右表 on 连接条件&#xff0c;表示以左表为基础&#xff0c;将左表的的所有记录与右表进行连接。即使右表中没有与左表匹配的记录&#xff0c;左连接…

大白话解析LevelDB:TableCache

文章目录 TableCache 的构造函数TableCache::Get在 Cache 中查找指定的 SST从 SST 中查找指定的 Key TableCache::NewIteratorTableCache::Evict TableCache在LevelDB中的作用是管理和缓存SST(Sorted String Tables)的读取。 为了提高读取效率&#xff0c;TableCache会缓存已打…

Linux-Uboot命令

help命令 进入 uboot 的命令行模式后输入“help”或者“&#xff1f;”&#xff0c;然后按下回车即可查看当前 uboot 所支持的命令。 查看某一个命令的帮助信息&#xff1a;&#xff1f;命令名称 或 help命令名称 信息查询命令 常用的和信息查询有关的命令有 3 个…

力扣Hot100

力扣100题easy 1. 两数之和 时间空间复杂度为O(N)&#xff0c;思路是&#xff1a;创建一个哈希表&#xff0c;对于每一个 x&#xff0c;先查询哈希表中是否存在 target - x&#xff0c;然后将 x 插入到哈希表中&#xff0c;即可保证不会让 x 和自己匹配。 class Solution {p…

Cookie、Session和JWT

摘要&#xff1a;Cookie、Session和JWT都不是什么新的技术了&#xff0c;最近用到了就比较和总结下。 我们知道http协议是无状态的&#xff0c;用户登录后如何验证和保存用户状态呢&#xff1f;下面来介绍 1. 使用Cookie和Session验证登录状态 session是保存在服务端的一种数…

STM32串口通信(发送与接收数据)

文章目录 前言一、介绍部分通信接口术语解释 串口通信简介硬件电路电平标准串口参数串口时序USART简介USART框图USRAT基本结构数据帧起始位检测波特率发生器CH340G 二、实例部分使用串口发送数据接线图代码实现重定向printf需要勾上Use MicroLIB中文不乱码方法 串口的发送与接收…

C++ 之LeetCode刷题记录(三十六)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 16. 最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你…

题目 1036: [编程入门]带参数宏定义练习

问题描述&#xff1a; 定义一个带参的宏&#xff0c;使两个参数的值互换&#xff0c;并写出程序&#xff0c;输入两个数作为使用宏时的实参。输出已交换后的两个值。 样例输入&#xff1a; 1 2 样例输出&#xff1a; 2 1 问题分析&#xff1a; 无 代码…

Qt篇——QTableWidget常用设置

//表格颜色间隔显示 ui->originDataTable->setAlternatingRowColors(true); //设置表格列数 ui->originDataTable->setColumnCount(3); //设置表格头 QStringList headerList1; headerList1 << QString::from…

LeetCode #2605 从两个数字数组里生成最小数字

题目 给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 &#xff0c;每个数组中的元素 互不相同 &#xff0c;请你返回 最小 的数字&#xff0c;两个数组都 至少 包含这个数字的某个数位。 示例 1&#xff1a; 输入&#xff1a;nums1 [4,1,3], nums2 [5,7] 输出&#…

Python 从文件中读取JSON 数据并解析转存

文章目录 文章开篇Json简介Json数据类型Json硬性规则Json数据转化网站Json和Dict类型转换json模块的使用Python数据和Json数据的类型映射json.dumps1.字典数据中含有**存在中文**2.json数据通过缩进符**美观输出**3.对Python数据类型中键进行**排序输出**4.json数据**分隔符的控…

【软件测试】接口调不通排查分析+常遇面试题总结

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、接口调不通&am…

【论文阅读】深度学习在过冷沸腾气泡动力学分割中的应用

Application of deep learning for segmentation of bubble dynamics in subcooled boiling 深度学习在过冷沸腾气泡动力学分割中的应用 期刊信息&#xff1a;International Journal of Multiphase Flow 2023 级别&#xff1a;EI检索 SCI升级版工程技术2区 SCI基础版工程技术3区…

(libusb) usb口自动刷新

文章目录 libusb自动刷新程序Code目录结构Code项目文件usb包code包 效果描述重置reset热拔插使用 END libusb 在操作USB相关内容时&#xff0c;有一个比较著名的库就是libusb。 官方网址&#xff1a;libusb 下载&#xff1a; 下载源码官方编好的库github&#xff1a;Release…