javascript中安全的类型检测

基本数据类型检测

返回类型有:number, boolean, string, undefined, object, function

var i = 2;                        console.log(typeof i);         //number
var b = true;                     console.log(typeof b);         //boolean
var s = "hello";                  console.log(typeof s);         //string
var n = null;                     console.log(typeof n);         //object
var u;                            console.log(typeof u);         //undefined
var o = new Object();             console.log(typeof o);         //object

注:typeof NaN返回的结果是number

引用类型检测

var iO = new Number(2);               console.log(iO instanceof Number);         //true
var bO = new Boolean(true);           console.log(bO instanceof Boolean);         //true
var sO = new String("hello");         console.log(sO instanceof String);         //true
var a = [1,2,3];                      console.log(a instanceof Array);         //true
var aO = new Array(1,2,3);            console.log(aO instanceof Array);         //true

注:用typeof检测对象类型的结果都为object, 而用instanceof检测对应的基本类型的结果均为false

aO instanceof Array中检测aO是否是一个数组时,首先aO必须是一个数组,而且还必须与Array构造函数在同个全局作用域中(Array是window的属性)。如果aO是在另一个fram中定义的数组,则检测结果也为false

所以引用类型检测时应该使用如下方法检测:

function isArray(value){
     return Object.prototype.toString.call(value) == "[object Array]";
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、typeof 用来检测数据类型的运算符 typeof value ->返回值首先是一个字符串,其次里面包含了对...
    虎帅锅阅读 563评论 0 1
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,220评论 0 6
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 北京这个地方,看来不光是“春脖子短”,“秋脖子也短”啊! 十一放假前还是秋初,天微微有点凉,树叶刚刚有点变黄。十一...
    毛瀛德阅读 257评论 0 1
  • 迟暮山村静,昏鸦绕树旁。 风吹摇叶落,疏影晚秋凉。 近陌烟纱白,远...
    古道西风廋马阅读 160评论 0 1