JavaScript检测类型
来源:互联网 发布:北京网络约车新规 编辑:程序博客网 时间:2024/05/17 06:15
由于刚才参加了一个公司的在线笔试,在检测类型这方面出了点小乱子,所以写篇文章做个笔记。
typeof操作符
ES有五种简单的数据类型:Undefined,Null,Boolean,Number和String,还有一种复杂的数据类型Object。对一个值使用typeof操作符可能返回下列某些字符串:
- “undefined”——如果这个值未定义;
- “boolean”——如果这个值是布尔值;
- “string”——如果这个值是字符串;
- “number”——如果这个值是数值;
- “object”——如果这个值是对象或null;
- “function”——如果这个值是函数。
以下是使用typeof的例子:
var arr = [];var str = 'string';var num = 100;var fun = function() { console.log('this is a test.');};var obj = {};var nothing;var bool = true;console.log(typeof arr); // objectconsole.log(typeof str); // stringconsole.log(typeof num); // numberconsole.log(typeof fun); // fucntionconsole.log(typeof obj); // objectconsole.log(typeof nothing); // undefinedconsole.log(typeof bool); // boolean
由上可知,typeof对于Object、Array、Null都会返回对象,同时,在Safari及之前的版本、Chrome7及之前的版本对正则表达式使用typeof操作符时会返回“function”,而其他浏览器在这种情况下会返回“object”。另外,在使用typeof操作符时,也可当其为函数一样使用,例如typeof(90);返回“number”。
instanceof操作符
typeof操作符能够很好的检测出String、Number、Boolean、Undefined的值,但是对于Object和Array(实际上Array也是一种对象),那么就无法很好地检测出来了。instanceof操作符能够检测某个实例是否是某个特定对象的实例,以下是其使用方法:
var Object1 = function() { this.name = 'paper_crane'; this.age = 22;}var Object2 = function() { this.name = 'paperCrane'; this.school = 'sysu';}var arr = [];var obj1 = new Object1();var obj2 = new Object2();console.log(obj1 instanceof Object)console.log(obj1 instanceof Object1); // trueconsole.log(obj1 instanceof Object2); // trueconsole.log(obj2 instanceof Object2); // trueconsole.log(obj2 instanceof Object1); // trueconsole.log(arr instanceof Array); // trueconsole.log(null instanceof Object); // false
由上面的示例可以看出,instanceof操作符能够判断一个实例的类型,但是这个函数也有其缺陷:它假定只有一个全局执行环境。如果网络中包含过个框架,那么实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。此时,检测是都是数组类型的最好方法是使用Array.isArray(params)函数,可以准确的检测其是否是数组。
0 0
- javascript 浏览器类型检测
- Javascript类型检测
- JavaScript类型的检测
- javascript 类型检测
- JavaScript中类型检测
- javascript 类型检测
- JavaScript类型检测
- JavaScript 的类型检测
- JavaScript-数据类型-类型检测
- JavaScript检测浏览器类型
- JavaScript类型检测详解
- JavaScript 类型检测
- javascript-深入浅出-类型检测
- javascript的类型检测
- JavaScript变量类型检测
- javascript类型检测
- JavaScript检测类型
- JavaScript的类型检测
- 哈夫曼树和哈夫曼编码
- iOS GPUImage 的使用
- MySQL安装
- vb.net 教程 1-8 日期时间类型2
- x86主机搭建家庭智能路由系统 ---- Proxmox虚拟化实现一机多用
- JavaScript检测类型
- POJ 2777 Count Color 线段树+小技巧
- iOS中的gzip解压
- 【天梯赛】L2-006. 树的遍历(层次遍历)
- PAT甲级1001题解
- Qt工程转VS工程
- java下载工具类,支持断点续传
- [DP] Tsin A1315 积木
- java多线程——ThreadLocal