js判断技巧

1.typeof 类型判断

利用typeof关键字我们能输出具体类型:

var o1=[];
var o2={};
var o3=123;
var o4="123";
alert(typeof o1);
alert(typeof o2);
alert(typeof o3);
alert(typeof o4);

我们知道js数据类型是不存在数组类型的,arr会显示出object类型。

我们知道为null或者是未被定义,会在if判断中转为false,那么o1和o2这种指定怎么处理的?

var o1=[];
var o2={};
var o3=123;
var o4="123";
var o5;
if(o1){alert(1)}else{};
if(o5){alert(1)}else{};

被未定义和指定类型定义值为空是两个概念,同样null类型就只有值null,和o1,o2这种无值定义也是不同的。

var o6=null;
if(o6){}else{alert(2)};

结论:

1.typeof可以判断类型,无array类型一说

2.[],{}和null是不同的,null类型只有一个值就是null,{}虽然没有值但是属于object类型

3.if判断中null和未定义转为false的null只是指代类型为null,但是类型为null的只有一个null值,看结论2

 

2.instanceof 类型判断

同typeof类型,不过匹配到是true,不匹配就是false。

var o1=[];
var o2={};
var o3=123;
var o4="123";
var o5=null;
alert(o1 instanceof Object);
alert(o2 instanceof Object);
alert(o3 instanceof Object);
alert(o4 instanceof Object);
alert(o5 instanceof Object);

除了原生类型,其实我们对自定义类型同样可以使用这个判断方法。

function Per(arg){
 this.name=arg;
};
var p1=new Per("123");
alert(p1 instanceof Per);

结论:

1.与typeof类似返回真假值

2.除了原生类型还可以自定义类型的判断,typeof同理

 

 

3.in 判断集合键存在与否

集合有数组和对象类型,数组下标都是数字类型,对象类型就是字符串或者数字做下标了

var arr=[1,2,3,4,5];
var obj={a:123,b:456};
alert(0 in arr);
alert(8 in arr);
alert("a" in obj);
alert("c" in obj);

返回值也是根据有无返回布尔类型对象。

window也是对象类型,用key我们可以调用下面的方法,比如定时器

alert("setInterval" in window);
alert("aa" in window);

除了判断力能,还有循环处理,for in的结合

var obj={a:123,b:456};
for(var key in obj){
 alert(obj[key]);
};

结论:

1.in是键是否属于集合的判断

2.只要是object类型的都可用,window也是对象类型

3.in其实还可用在for in循环中 

 

4.isNaN 是不是一个数的判断

这个方法如果传入参数不是数才会返回true。

var oo=123;
var op="aaa";
alert(isNaN(oo));
alert(isNaN(op));

 其实在数字类型中,会出现正无穷,负无穷还有分数字母为0的问题,这样这个方法就非常有用了

alert(isNaN(8/0));

结论:

1.数字类型中各种特殊值使用

 

5.==和=== 相等判断

看下面处理,利用==

var n=123;
var nn="123";
if(n==nn){alert(1)}else{};

一个是数字类型一个是字符串,不过值都是123,利用==判断是成立的,利用===

var n=123;
var nn="123";
if(n===nn){alert(1)}else{};

===要保证值和类型都一样才会成立

var n=123;
var nn=123;
if(n===nn){alert(1)}else{};

结论:

1.==值相同成立

2.===值和类型都相同成立

转载于:https://my.oschina.net/tbd/blog/637886

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值