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

前言:
    🤡 作者简介:我是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);//truevar Person=function(){}
var person1=new Person()
console.log(person1 instanceof Person);//truevar 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 tyif(typeof target=='object'){//此处使用了短路表达式ty='null' //此行代码必须写在if的第一行。用来判断是否为nulltarget 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.mzph.cn/news/103081.shtml

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

相关文章

学习node.js WS服务器设置SFTP

Python读视频流发送给前端H5呈现-websocket实现方法_h5 websocket python-CSDN博客 Node.js实现WebSocket聊天室的例子 | 老卫(柳伟卫)的博客 - 关注编程、系统架构、性能优化 | waylau.com websocket教程 WebSockets - Events & Actions (tutoria…

Android Studio新建项目教程

Android Studio新建项目教程 一、创建新项目 二、选择空白页项目类型 配置然后finish 等待项目完成初试化 等待初始化结束,创建完成 三、运行创建的APP

JS+Jquery用法

1. 当存在多个select时,想要获取每一个select的选中的值(使用变量赋值的方法). var Metric "";$(#Metric).change(function () {Metric $(this).children("option:selected").val();console.log("Metric:" Metric);}); 2. 在页面…

Unity微信小游戏无法调起输入框

最近在开发一款微信小游戏,有个微信修改名字的功能。突然发现发存微信小游戏后,输入框无法调起键盘。 后发现需要发布为WebGL后需要调用微信的一些接口才能调起,这边做个记录。 using UnityEngine; using UnityEngine.UI; using WeChatWASM;…

git和github的使用

文章目录 1. 安装git2. 注册github3. 配置Git4. 以上完成之后,可以在github上新建远程仓库5. 本地操作:6.关联分支的方法7.本地分支和远程分支关联后,直接git push即可 1. 安装git 2. 注册github 3. 配置Git 参考:https://www.…

VScode远程root权限调试

尝试诸多办法无法解决的情况下,允许远程登陆用户直接以root身份登录 编辑sshd_config文件 sudo vim /etc/ssh/sshd_config 激活配置 注释掉PermitRootLogin without-password,即#PermitRootLogin without-password 增加一行:PermitRootLo…

Linux 文件系统

目录 磁盘文件管理 认识磁盘 抽象认识磁盘 磁盘划分 inode vs 文件名 软硬链接 磁盘文件管理 前面我们说了关于 Linux 文件系统中 “已打开的文件” ,但是在系统中可不光只有已打开的文件,实际上,系统中还存在很多没有打开的文件。 既…

Redis cluster 集群

redis集群redis集群是一个提供在多个redis节点间共享数据的程序集,redis集群可以支持多个master Redis集群支持多个master,每个master又可以挂载多个slave 读写分离、支持数据的高可用、支持海量数据的读写存储操作由于Cluster自动Sentinel的故障转移机制&#xff…

软考 系统架构设计师系列知识点之软件质量属性(5)

接前一篇文章:软考 系统架构设计师系列知识点之软件质量属性(4) 所属章节: 第8章. 系统质量属性与架构评估 第2节. 面向架构评估的质量属性 相关试题 5. 某公司欲开发一个网上商城系统。在架构设计阶段,公司的架构师…

多线程并发篇---第七篇

系列文章目录 文章目录 系列文章目录一、volatile关键字的作用?二、常用的线程池有哪些三、简述一下你对线程池的理解一、volatile关键字的作用? 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语 义: 保证了不同线程对这个变量…

mac上安装mysql

下载地址:https://downloads.mysql.com/archives/community/ 可以选择dmg安装包,也可以选择tar包。 1、dmg安装包: 1.1)安装: 类似windows的exe,直接next即可。 注意:安装完成之后会弹出一个…

【Python】Python 获取天气数据

Python 获取天气数据 检查天气似乎相当简单:打开 Web 浏览器,点击地址栏, 输入天气网站的 URL(或搜索一个,然后点击链接), 等待页面加载,跳过所有的广告等。 其实,如果有一个程序,…

C# 超详细的WebService创建、发布与调用(VS2022)

本文章是以vs2022来创建的,对内容进行了补充和丰富。如果想看2019的,可以参考。Visual Studio 2019创建 WebServiceCSDN 1.编写接口 打开VS2022,新建项目,这里我选择的是 “ASP.NET Web应用程序(.NET Framework)”。 在这里有一个注意点&a…

Vue整合

基础配置: 1.创建:cmd 中 输入 create vue vue_name 启动命令:npm run serve 2.当node_modules(依赖)丢失时通过 npm install 下载 【根据:package-lock.json下载】 3.下载路由 npm i vue-router3.5.2 -S main.js导入 // np…

机器学习网络模型绘图模板

一 前言 本期为读者推荐一款名为ML Visuals的机器学习画图PPT模板,ML Visuals 专为解决神经网络画图问题设计,通过提供免费的专业的、科学的和充分的视觉和图形来帮助机器学习社区改善科学传播。目前,ML Visuals 包含了超过100多个的自定义图…

【NLTK系列01】:nltk库介绍

一、说明 NLTK是个啥?它是个复杂的应用库,可以实现基本预料库操作,比如,、将文章分词成独立token,等操作。从词统计、标记化、词干提取、词性标记,停用词收集,包括语义索引和依赖关系解析等。 …

[QCM6125][Android13] 默认关闭dm-verity以及OTA升级校验vbmeta和framework matrix失败问题

问题描述 在user版本增加root权限之后,每次进行remount的时候,总会提示 remount of the / superblock failed: Permission denied remount failed 这时候,需要先关闭dm-verify,重启,再remount;整个过程过于…

LeetCode【128】最长连续序列

题目: 分析: 1、最长连续序列的长度为 y-x1,如1-4:4-11 4 2、不要被这里的On误导,不敢使用双层循环 3、只要找到最小的数值,并由此开始计算,不产生重复计算,则为On 代码&#xf…

Docker简单案例

我们安装完Docker之后就可以练习了. 镜像 案例1-拉取、查看镜像 1)首先去镜像仓库搜索nginx镜像,比如 : Docker Hub Container Image Library | App Containerization 搜索我们想要拉取的镜像 , 例如: nginx 复制命令: docker pull nginx …

【数据结构】单链表按位序插入元素e【前插】(带头结点的和不带头结点的)这篇很重要,文字说明比起其他篇是正确的

声明单链表的结构体成员 struct LNode {int data;struct LNode *next; };typedef struct LNode LNode;// 或者: 两者是等价的 typedef struct LNode {int data;struct LNode *next; }LNode;按位序插入元素e:就是在第i个位置插入新结点,数据域为e 以下带…