typeof和instanceof简介及用法
typeof
使用方式:typeof a 或者 typeof (a) 返回一个string类型的值
顾名思义,这货是检查类型的,输出的是一个string值,直接看下面的检测代码:
console.log(typeof 'i am a string'); // string console.log(typeof true); // boolean console.log(typeof 10); // number console.log(typeof undefined); // undefined console.log(typeof function() {}); // function console.log(typeof null); // object console.log(typeof new String('i am a string')); // object console.log(typeof new Boolean(true)); // object console.log(typeof new Number(10)); // object console.log(typeof [1, 2, 3, 4]); // object console.log(typeof new Array(1, 2, 3, 4)); // object console.log(typeof new Date()); // object console.log(typeof new RegExp('hello world', 'g')); // object console.log(typeof /hello/g); // object
这货最大的短板就是对null和数组的检测不利(都只能返回object)!
typeof除了能初步检测变量的类型外,还能判断一个变量是否为空(没赋值或者没声明):
var a; if(typeof a === 'undefined') { console.log('hello'); // hello } if(a === undefined) { console.log('world') // world }
有趣的是没赋值和没声明的元素经过typeof运算后得到的结果一样,都是“undefined”字符串(因为本来就都是typeof undefined):
var a; console.log(typeof a === typeof b); // true
这时该如何区别?可以用 in window 判断:
var a; console.log('a' in window); // true console.log('b' in window); // false
相对于instanceof,typeof还是比较简单的~
instanceof
使用方式:a instanceof b 返回一个boolean值
instanceof的英文解释是实例,它的作用是判断某个变量是否为某一对象的实例。看检测代码:
console.log('string' instanceof String); // false console.log(true instanceof Boolean); // false console.log(10 instanceof Number); // false console.log(undefined instanceof Object); // false console.log(null instanceof Object); // false console.log({} instanceof Object); // true console.log(new String('string') instanceof String); // true console.log(new Boolean(true) instanceof Boolean); // true console.log(new Number(10) instanceof Number); // true console.log([] instanceof Array); // true console.log(new Array() instanceof Array); // true console.log(new Date() instanceof Date); // true console.log(new RegExp('') instanceof RegExp); // true console.log(/hello/ instanceof RegExp); // true
我们可以看到,instanceof规定基本数据类型(比如'string'、true、10等)都不能算是对象的实例,而new的一般都算。
instanceof的第一个值(即a instanceof b中的a)必须先进行过声明,不然报错;而typeof则可对未声明变量进行判断(返回"undefined")。
typeof和instanceof简介及用法的更多相关文章
- js中typeof与instanceof的不同用法
typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果: number,boolean,string,function(函数),object(NULL,数组,对象),und ...
- JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- javascript中typeof和instanceof用法的总结
今天在看相应的javascript书籍时,遇到了typeof和instanceof的问题,一直不太懂,特地查资料总结如下: JavaScript 中 typeof 和 instanceof 常用来判断 ...
- typeof 和 instanceof apply与call简单用法以及判断数组的坑
1 typeof 和 instanceof var array = [];平时如果判断一个对象是否为数组,可能你会用 typeof array,但是输出为“object”. typeof 一般只能返回 ...
- typeof()和instanceof()用法区别
typeof()和instanceof()用法区别: 两者都是用来判断数据类型的 typeof()是能用来判断是不是属于五大类型Boolean,Number,String,Null,Undefined ...
- JS中typeof和instanceof用法区别
typeof和instanceof都可以用来判断变量 1.typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果: number,boolean,string,functi ...
- 比较typeof与instanceof?
相同点:JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的. typeof的定义和用法:返回值是一个字符串,用来说明变量的数据类型. 细节: ...
- JS中typeof和instanceof的用法和区别
typeof和instanceof的区别 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的 instanceof的用法 instanceof返回的是一个布尔值 ...
- typeof、instanceof、hasOwnProperty()、isPrototypeOf()
typeof 操作符 instanceof 操作符 hasOwnProperty()方法 isPrototypeOf()方法 1.typeof 用于获取变量的类型,一般只返回以下几个值:string, ...
随机推荐
- 23 其它话题 - 《Python 核心编程》
- 为Secure Store Service生成新密钥,解决“生成密钥过程中发现错误”的问题
我们集成TFS和SharePoint Server以后,一个最常见的需求是通过SharePoint Server的Excel Service读取TFS报表中的信息,利用Excel Service的强大 ...
- Half Wavelength Dipole Antenna
Reference : 1. wikipedia The dipole antenna is the simplest and most widely used class of antenna.It ...
- 【温故而知新-Javascript】比较 undefined 和 null 值
JavaScript 中有两个特数值: undefined和null,在比较它们的时候需要留心.在读取未赋值的变量或试图读取对象没有的属性时得到的就是 undefined 值. <!DOCTYP ...
- T-SQL 语句创建Database的SQL mirroring关系
1 证书部分:principle 和 secondary 端执行同样操作,更改相应name即可 USE master; --1.1 Create the database Master Key, if ...
- 2014 Super Training #2 C Robotruck --单调队列优化DP
原题: UVA 1169 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show ...
- AC日记——神奇的幻方 洛谷 P2615(大模拟)
题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...
- Linux命令学习-top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. top - 01:06:48 up 1:22, ...
- IE插件收集
IEWatch IEWatch是一个微软IE的内置插件,可以让你看到和分析HTTP/HTTPS头信息,Cookies以及通过GET和POST提交的数据.我是经常用来看页面加载时间 下载最新版本请访问: ...
- TestLink学习三:发送邮件的两种配置方法
第一种:修改config.inc.php中的[smtp],配置为默认本地发送,用hotmail用户做接收,调试成功!(本人未尝试这种) // ----------------------------- ...