Javascript_备忘录4

     今天看了Expressions and Operators。有了C++的基础感觉学这章比较轻松,这次备忘的是Relational Expressions。其实最主要的是区分'=='和'==='这两个关系操作符的区别。简单的说'==='是严格相等,不会进行类型的转换,而'=='则会进行类型的转换。看下面的代码:

<script>
var a = 1;
var b = '1';
if(a==b){
    alert('123');
}
else{
    alert('321');
}
if(a===b){
    alert('1234');
}
else{
    alert('4321');
}
</script>
//结果输出是123和4321。

具体的区别是,对于'===':

  1. 如果两个操作数他们不具有相同的类型,则他们不相等;
  2. 如果两个操作数都是null或者undefined,那么他们相等;
  3. 如果两个操作数都是布尔型值truefalse,那么他们相等;
  4. 如果其中一个操作数值是NaN,那么他们就不相等。NaN和任何值都不相等包括他自己;
  5. 如果两个操作数是数值型而且其值相等,则他们相等。0和-0是相等的;
  6. 如果两个操作数是字符串而且他们对应位置的字符相等,则他们相等,如果两个字符串编码不一样则他们不相等;
  7. 如果两个操作数指的是相同的类,数组和函数那么他们相等。如果他们指向不同的类,即使类属性相同,他们也不相等。

对于'==':

  1. 如果两个操作数他们有同样的类型,则按照上面严格相等来判断他们是不是相等。
  2. 如果他们类型不相等,会使用以下的规则和类型转换来判断他们是否相等:
  • 如果一个值是null,另一个值是undefined,则他们相等。
  • 如果一个是string型,另一个是数值型,那么就会将string型转换为数值型再进行比较。
  • true会转换为数值1,false会转换为数值0,来比较。
  • 如果一个是类类型,另一个是数值或者字符,则会按照Javascript_备忘录2中的变量类型转换规则,转换之后再进行比较。
  • 任何以上没提到的操作数的类型组合都是不相等的。         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值