JS 小tips

这里介绍一下三个比较容易混淆的知识点,写写博客加深一下自己的印象,欢迎大家指教:
1.“==” 和 “===” 的区别
2.“typeof”  和 “instanceof” 的区别

3. 如何判断 “ undefined”, “null” ,“NAN”


一. “==” 和 “===” 的区别

1、对于 string,number 等基础类型,== 和 === 是有区别的

1)不同类型间比较,==之比较“转化成同一类型后的“值”,看“值”是否相等,如果”值“相等,则比较结果为true,否者为false;
 === 如果类型不同,其结果就是不等。
2)同类型比较,直接进行“值”比较,两者结果一样。
例如:
    var number = 1;

    var str = '1';

    var temp = 1;

    number == temp //true 相同类型 相同值

    number === temp //true 相同类型 相同值

    number == str //true  相同值

    number === str //false 不同类型


2、对于Array,Object等高级类型,==和===是没有区别的
     进行“指针地址”比较,相等即为true,否者为false。

3、基础类型与高级类型,==和===是有区别的
1)对于 ==,将高级转化为基础类型,进行“值”比较,如果“值”相等则为true,否者为false。
2)因为类型不同,=== 结果为false。

二.typeof 和 instanceof 常用来判断一个变量是什么类型,或者是否为空,但是两者还是有所区别的。

1.typeof 可以用来获取一个变量或者表达式的类型,一般只能返回几个结果:number,boolean,string ,function(函数),object(NULL,数组,对象),undefined。
     console.log( typeof (1) );           //返回“number”
        
     console.log( typeof ("1") );         //返回“string”
        
     var temp = '111';
     console.log( typeof (temp == '111') );//返回“boolean”

我们可以用 typeof 来判断一个变量是否存在,如:
    if(typeof temp!="undefined")

不要用 if(temp) 去判断,因为当 temp 不存在(未声明)则会出错。
typeof 在判断 NULL,数组,对象时返回的都是 object,这也是它的局限性,这时我们可以用 instanceof  来帮助我们判断。

2.instanceof 用于判断一个变量是否某个对象的实例。
如下面例子:
    var temp  = new Array();   console.log( temp instanceof Array ); //返回 true

    alert(temp instanceof Object); //返回 true;这是因为 Array 是 object 的子类。

    function test(){};

    var a = new test();

    console.log(a instanceof test)  //会返回true。


三. 如何判断“ undefined”,“null”,“NAN”

1 .判断 undefined   
    var temp = undefined;  

    if( typeof(temp) == "undefined" ) { } //返回true



2. 判断 null
       var temp = null;

       if( !temp && typeof(temp) != "undefined" && temp!= 0 ){}//返回true (避免报undefined 的错误)

3.判断NAN
      var temp = 1;

      if( isNaN(temp) ){} //返回false

undefined判断的是变量的类型,而null 和 NAN 两个判断是变量的值。


undefined可以用来表示以下的状况

  1. 表示一个未声明的变量,

  2. 已声明但没有赋值的变量,

  3. 一个并不存在的对象属性.


null 是一种特殊的object ,表示无值.


NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

使用 isNaN() 来判断一个值是否是数字。原因是 NaN 与所有值都不相等,包括它自己。


 




 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值