理解JS中 ===和!==运算符

本篇就浅议 == 、!= 来,颇析其中的奥秘,以此来加深自己对代码的理解能力。
 
一、 ==, != 运算符
   JS中 ==,!=运算符具有环境计算的功能。 在一般的程序设计语言中,== 运算符比较的是两个值字面量是否确实相等 或两个引用是否指向同一个对象时才相等,比如:
      var a = 1;
      var b = 1;
      alert( a == b) // 相等
      var obj1 = new Object();
      var obj2 = obj1;
      alert( obj1 == obj2); //相等
        就此看来一切很好,这也和强类型语言的判断标准一致, 如果以此就认为对它的认识结束了,固步自封的话,那我们的确错了,记住,JavaScript是弱类型的语言,弱类型语言和强类型语言的最大区别就在于弱类型语言比较松散,它能在不同的环境中把自己包装成满足环境计算的能力。比如说在bool环境中 它能把自身转换成bool值,哪怕本身是string类型,如:
     var a = "123";
     var b = 123;
     alert( a == b ); //a和b相等?  答案是:相等, 为了完成计算,a转换成了数值123
     var a = true;
     var b = 1;
     alert( a != b); //a和b不相等? 答案是:相等, 为了完成计算,a转换成了数值1
 
由此可以总结出:
    ==或!== 运算符在运算的时候,会根据环境进行类型转换,哪怕类型不相同,只要转换后的值能相等,那么它们就相等,否则就不相等。
二、=== ,!== 运算符
   理解了上面 == 运算符的比较规则,那么就比较好理解 === 运算符的比较规则了,===或!== 在比较值相等性时不进行类型转换。也称为恒等运算符,即语意上要严格相等或严格不相等。
如:
    var a = "123"
    var b = 123
    alert( a==b );//true     进行了类型转换所以相等 
    alert( a===b);// false   不进行类型转换所以不相等
   所以恒等运算符在进行比较时,只有类型相同,值相同才可能相等,两者却一不可。
 
三、几个特殊的测试
 alert( null == undefined) ; true
 alert( null === undefined); false
 alert( undefined == undefined); true
 alert( undefined === undefined); true
 alert( NaN == NaN); false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值