Js学习笔记(二)——严格相等运算符与相等运算符

严格相等运算符:===

        在执行严格运算符时,会首先计算操作符的值,然后比较这两个值;具体如下:

    (1)如果两个操作数类型不同,则返回false;

    (2)操作数中只要出现NaN,则返回false;

    (3)二者都为null或undefined,则为true;一个为null,一个为undefined,则为false;

    (4)操作数都为true或false时,则返回true;

    (5)操作数都为数字,且数值相等时,则返回true;(并且-0===0为true);

    (6)操作数都为字符串,且各个位上的字符都相等时,则返回true;

    (7)两个引用指向同一个对象、函数或数组时,则返回true

相等运算符:==

        它的比较并不严格,当操作数的类型一致时,它会按照严格相等的规则进行比较,但当操作数的类型不一致时,它会尝试进行类型转换;

    (1)一个是null,一个是undefined时,则返回true

    (2)一个值是字符串,一个是数字时,会首先将字符串转换为数字,然后用转换后的值进行比较;

    (3)如果其中的一个操作数为true或false,则会将其先转换为1或0再比较(true:1,false:0);

    (4)如果一个值为对象,另一个值为数字或是字符串,则会先将对象转换为原始值(valueof函数),再进行比较;

    (5)其它不同类型之间的比较均为不相等


总结:

    严格相等(===):类型一样+值一样(不执行类型转换);

   相等(==):先对比较对象进行类型转换,转换成同一类型后在进行值得比较;


举例:

        
var a = {name : "elaine"};
var b = {name : "elaine"};
var c=a;
a==b;//false
a==c; //true
a===b; //false
a===c; //true

又如:

"true"==1; //false

因为字符串true不能被转换成数值,因此在转换时会返回NaN,因此为false;






            


    


    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值