经典面试题第十更---instanceof与typeof

news2024/11/15 8:34:16

前言:
    🤡 作者简介:我是Morning,计算机的打工人,想要翻身做主人 🙈 🙈 🙈
    🏠 个人主页: Morning的主页
    📕系列专栏: 前端面试备战
    📞 如果小编的内容有欠缺或者有改进,请指正拙著。期待与大家的交流
    🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏

 

 今天咱们来学习一点简单的,轻松愉快,干货满满⭐⭐⭐

目录

面试题

1.typeof

2.instanceof

3.笔试题


面试题

typeof能否正确判断类型?instanceof能正确判断数据类型的与原理是什么

对于原始类型来说,除了null都可以显示正确数据类型。

instanceof内部机制是通过原型链来判断的,检测实例对象的原型链上是否有构造函数的prototype属性

1.typeof

对于原始类型来说,除了null都可以显示正确数据类型(null会显示object类型)

console.log(typeof 1);//number
console.log(typeof 'susu');//string
console.log(typeof true);//boolean
console.log(typeof undefined);//undefined
console.log(typeof Symbol());//symbol
console.log(typeof null);//object

对于对象来说,除了函数都会显示object(函数、数组都属于对象)

console.log(typeof {a:1});//object
console.log(typeof [1,2,3]);//object
console.log(typeof function(){});//function

2.instanceof

可以判断复杂数据类型(obj   arr   function),但是不可以判断基本数据类型(即原始类型)

console.log(1 instanceof Number);//false
console.log({a:1} instanceof Object);//true
console.log([1,2,3] instanceof Array);//true
console.log(function(){} instanceof Function);//true

var Person=function(){}
var person1=new Person()
console.log(person1 instanceof Person);//true

var str='hello susu'
console.log(str instanceof String);//false
var str=new String('hello susu')
console.log(str instanceof String);//true

3.笔试题

需求:写一个函数可以返回参数的具体数据类型

function getType(target){
    var ty
    if(typeof target=='object'){
        //此处使用了短路表达式
        ty='null' //此行代码必须写在if的第一行。用来判断是否为null
        target instanceof Object && (ty='Object')
        target instanceof Array && (ty='Array')
    }else{
        typeof target === 'string' && (ty='string')
        typeof target === 'number' && (ty='number')
        typeof target === 'boolean' && (ty='boolean')
        typeof target === 'undefined' && (ty='undefined')
        typeof target === 'function' && (ty='function')
        typeof target === 'symbol' && (ty='Symbol')
    }
    return ty
}
console.log(getType(function fn(){}));
console.log(getType(1));
console.log(getType('sss'));
console.log(getType(undefined));
console.log(getType(true));
console.log(getType([1,2,3]));
console.log(getType({a:1,b:2}));
console.log(getType(Symbol()));
console.log(getType(null));

a112268dbc2742eaa868ba833051b4b1.png

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

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

相关文章

「Qt中文教程指南」如何创建基于Qt Widget的应用程序(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文描述了如何使用…

计算机毕业设计选什么题目好?springboot 班级事务管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

JS里字符串全部替换

突然在需要处理一个字符串,使用了替换函数之后,发现只替换了第一个位置的字符串,如下结果: 就想要全部替换,可以这样处理: 使用 str.replace(/需要替换的字符串/g,"新字符串")或者使用replaceA…

CSP-J/S第二轮认证注意事项

金九银十日,复赛进行时。 CSP-J/S复赛马上就要开始了,但是每年都有很多孩子因为一些不起眼的失误导致一年的努力付之东流。下面为大家准备了一些复赛的注意事项,避免踩坑。 在哪里写代码 第二轮比赛与我们平时在OJ上做题形式不同&#xff0…

数据挖掘实战(3):如何对比特币走势进行预测?

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

案例(部门管理和员工管理)-(2)

一、新增员工 1.Controller层 PostMappingpublic Result save(RequestBody Emp emp){log.info ( "新增员工,emp:{}",emp );empService.save(emp);return Result.success ();}2.Service层 Overridepublic void save(Emp emp) {emp.setCreateTime ( LocalDateTime.now …

新手如何快速上手HTTP爬虫IP?

对于刚接触HTTP爬虫IP的新手来说,可能会感到有些困惑。但是,实际上HTTP爬虫IP并不复杂,只要掌握了基本的操作步骤,就可以轻松使用。本文将为新手们提供一个快速上手HTTP爬虫IP的入门指南,帮助您迅速了解HTTP爬虫IP的基…

mysql面试题36:MySQL的binlog有几种录入格式?分别有什么区别

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL的binlog有几种录入格式?分别有什么区别 MySQL的binlog(二进制日志)是用于记录数据库的更改操作的一种机制,它可以用于数据恢复、数据复…

linux安装filebeat并收集日志到elasticsearch

摘要: 通过filebeat收集服务器上各个应用的日志到elasticsearch,通过tags区分不同的应用创建不同的索引保存日志。 官网地址: https://www.elastic.co/cn/downloads/past-releases#filebeat 安装步骤: 1:下载并解…

【LeetCode高频SQL50题-基础版】打卡第5天:第26~30题

文章目录 【LeetCode高频SQL50题-基础版】打卡第5天:第26~30题⛅前言超过5名学生的课🔒题目🔑题解 求关注者的数量🔒题目🔑题解 只出现一次的最大数字🔒题目🔑题解 买下所有产品的客户&#x1f…

vue踩的坑:属性报undefined错误问题汇总

问题 在一个组件里&#xff0c;通过props传值进去对象&#xff0c;在控制台打印报错误信息&#xff0c;提示某属性不存在。 例如&#xff1a; <div>{{data.param.aaa}}</div> 类似这种的&#xff0c;取对象子级下面的值&#xff0c;就报了undefined。 原因应该…

机器学习(21)---召回率(recall)、精度(precision)和准确率(accuracy)

文章目录 1. 分布不平衡的数据集2. TP、TN 、FP 、FN3. 混淆矩阵4. 各自的计算公式5. 例题应用 1. 分布不平衡的数据集 1. 精度&#xff08;precision&#xff09;和召回率&#xff08;recall&#xff09;是衡量机器学习模型性能的重要指标&#xff0c;特别是数据集分布不平衡的…

Ubuntu 20.04LTS环境下替换Vivado 2019.2代码编辑器

Ubuntu使用 打开 tools-settings-Text Editor 参考 打开 tools-settings-Text Editor 选中Custom Editor&#xff0c;然后点击右边的三个点&#xff0c;弹出这个界面 然后切换到linux 终端&#xff0c;安装xterm 然后在下面编辑框里输入&#xff1a; xterm -geometry 100x60 …

苹果电脑用什么清理软件比较好?

很多人都会有这样的误解&#xff1a;mac系统不用清理。实际上mac只是将系统垃圾隐藏了&#xff0c;并且需要通过特定的方式打开。但其实在我们日常工作不用这么麻烦&#xff0c;我们只需用苹果电脑专业的清理软件就好了。今天小编就给大家分享一下mac用什么清理软件好 一、mac用…

nvm: node版本管理工具

有时候需要新旧项目一起开发&#xff0c;但是旧的项目用的node版本比较低&#xff0c;也不好升级&#xff0c;所以我们可以使用nvm 来进行node版本管理 1. 准备工作 先删除掉原来的nodejs 下载nvm: 官网地址&#xff1a;Releases coreybutler/nvm-windows GitHub 百度网盘…

Apollo版本变迁里程碑:从诞生到巅峰的无人驾驶之路

特点与改进 概述里程碑版本变迁6.0特点及改进7.0特点及改进8.0特点及改进代码差异 福利活动 主页传送门&#xff1a;&#x1f4c0; 传送 概述 Apollo (阿波罗)是一个开放的、完整的、安全的平台&#xff0c;将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xf…

为啥 Erlang 没有像 Go、Scala 语言那样崛起?

为啥 Erlang 没有像 Go、Scala 语言那样崛起&#xff1f; - 知乎 问&#xff1a; 成熟的杀手级产品&#xff0c;技术栈完整&#xff0c;社区活跃&#xff0c;易上手使用的人比较多。 scala 目前业界应用广泛&#xff0c;技术栈完整&#xff0c;社区活跃&#xff0c;还有 spar…

Bun v1.0.3 发布,Zig 编写的 JavaScript 运行时

导读Bun 发布了其最新版本 v1.0.3&#xff0c;这是一个集 JavaScript 运行时、打包器、转译器和包管理器于一体的工具。这次的更新不仅修复了众多已知的问题&#xff0c;还引入了一系列令人期待的新功能。 首先&#xff0c;Bun 在这个版本中增加了对 TypeScript 的 emitDecora…

C++ 重载运算符在HotSpot VM中的应用

C支持运算符重载&#xff0c;对于Java开发者来说&#xff0c;这个可能比较陌生一些&#xff0c;因为Java不支持运算符重载。运算符重载本质上来说就是函数重载。下面介绍一下HotSpot VM中的运算符重载。 1、内存分配与释放 在C中可以通过new运算符创建一个C的类实例&#xff…

整车热管理「升温」,哪些厂商排名电子风扇市场份额TOP10

作为整车热管理系统的关键组成部分&#xff0c;风扇在传统燃油车时代主要是帮助发动机、空调系统进行散热冷却&#xff1b;同时&#xff0c;产品也经历了从硅油风扇到电子风扇&#xff08;从有刷电机到无刷电机的演进&#xff09;的升级。 而在新能源汽车的架构中&#xff0c;…