Javascript学习笔记:3种检测变量类型的方法
①typeof检测变量类型
console.log(typeof 1);//number
console.log(typeof "a");//string
console.log(typeof true);//boolean
console.log(typeof undefined);//undefined
console.log(typeof (function func(){}));//function
console.log(typeof Symbol())//symbol
console.log(typeof null);//object
console.log(typeof {});//object
typeof检测变量类型只能返回:number、string、boolean、undefined、function、symbol、object这七种值,可以用来判断基本数据类型,但对于判断引用类型来说还不够具体。这里需要注意的是对于函数、null的typeof检测结果。
②instanceof检测变量类型
console.log({} instanceof Object);//true
console.log([] instanceof Array);//true
console.log([] instanceof Object);//true
console.log((function func(){}) instanceof Function);//true
console.log((function func(){}) instanceof Object);//true
console.log(/a{3}/gi instanceof RegExp);//true
console.log(/a{3}/gi instanceof Object);//true
instanceof只可以用来判断引用类型变量的具体类型,不可以用来判断基本数据类型(如果使用instanceof操作符检测基本数据类型的值,则该操作符返回结果始终都是false)。使用instanceof时,只要后面的数据类型处于引用类型变量所属类型的原型链上,结果都将返回true。所有引用类型的值都是Object实例,所以所有引用类型变量的instanceof Object都将返回true。
③constructor检测变量类型
console.log({}.constructor===Object);//true
console.log([].constructor===Array);//true
console.log([].constructor===Object);//false
console.log((function func(){}).constructor===Function);//true
console.log((function func(){}).constructor===Object);//false
console.log((/a{3}/gi).constructor===RegExp);//true
console.log((/a{3}/gi).constructor===Object);//false
对于所有引用类型的变量,都有一个属性constructor,该属性指向该引用类型的构造函数。当然,constructor不能用于基本数据类型的类型检测。
Javascript学习笔记:3种检测变量类型的方法的更多相关文章
- JavaScript学习笔记——JS中的变量复制、参数传递和作用域链
今天在看书的过程中,又发现了自己目前对Javascript存在的一个知识模糊点:JS的作用域链,所以就通过查资料看书对作用域链相关的内容进行了学习.今天学习笔记主要有这样几个关键字:变量.参数传递.执 ...
- JavaScript学习笔记(八)——变量的作用域与解构赋值
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- Java学习笔记(4)--- 变量类型,修饰符
1.变量类型: a.定义: 和C++差不多,就是: type identifier [ = value][, identifier [= value] ...]: type为Java数据类型.iden ...
- Python基础学习笔记(二)变量类型
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...
- Javascript学习笔记:对象的属性类型
在ECMAScript中有两种属性:数据属性和访问器属性 1.数据属性 configurable:表示能否通过delete删除属性从而重新定义属性:或者能否修改属性的特性:或者能否把属性修改为访问器属 ...
- 1.4(JavaScript学习笔记) window对象的属性及方法
一.window对象 window对象代表当前窗口,所有全局对象都是windows的属性, 例如document是window的属性,window.document.writer("&quo ...
- JavaScript学习笔记:数组的indexOf()和lastindexOf()方法
https://www.w3cplus.com/javascript/array-part-6.html
- JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
随机推荐
- Let’s Encrypt 配置
刚配置了下Let's Encrypt,chrome浏览器里有绿条出来,看官网其它平台问题应该也不大.我还没有研究这个工作原理,关键是刚花了几千块给公司买了个收费的证书认证.这里写下配置过程(https ...
- 移动应用开发过程中需要哪些IOS APP工具
虽说如今要开发一款IOS app应用软件已经不是什么难事,app开发技术已经发展成熟,所以要制作一款适用于苹果IOS智能操作系统的app软件也挺容易的了.不过对于开发者来说,可以通过一些app工具来更 ...
- leetcode 397
题目描述: Given a positive integer n and you can do operations as follow: If n is even, replace n with n ...
- linux------------Another app is currently holding the xtables lock. Perhaps you want to use the -w option?
今天突然遇到这个么一个奇葩的问题,直接说问题的原因:原因是我们创建了一个计划任务,这个计划任务是一分钟执行一次,是iptables封ip的一个sh脚本.由于攻击我们的ip太多,已经达到了几千个,这个脚 ...
- MySQL添加用户、删除用户与授权
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 1.1 登录MYSQL: @>mysql -u root -p @&g ...
- hdu5714 拍照[2016百度之星复赛C题]
由于船移动的速度都一样,那么对于往一个方向的船相对距离其实是不变的,我们可以把往一个方向移动的船都视作静止,并求出在哪些观测位置可以看到,很明显对于船[x,y,z],当x+z>=y-z的时候,可 ...
- Android -- 常见控件的小效果
1,EditText控件 ① 修改光标颜色 自定义drawable 创建cursor.xml文件 <?xml version="1.0" encoding="utf ...
- WebApi 通过类名获取类并实例化
环境:Web Api 返回值类型为DTO实体,继承基类DTO---BaseResultDto public class BaseResultDto { /// <summary> /// ...
- 【003:switch 不加 break的结果
#include <stdio.h> int main(){ char ch = 's'; switch(ch){ case 'a':{ printf("aaaaa") ...
- ASP.NET 前后台调用方法
Asp.Net中几种相似的标记符号: <%=...%>< %#...%>< %%>< %@ %>解释及用法 答: < %#... %>:是在 ...