您的位置:首页 > Web前端 > JavaScript

Javascript_备忘录4

2013-01-04 17:21 218 查看
今天看了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。


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

如果两个操作数他们不具有相同的类型,则他们不相等;

如果两个操作数都是null或者undefined,那么他们相等;

如果两个操作数都是布尔型值truefalse,那么他们相等;

如果其中一个操作数值是NaN,那么他们就不相等。NaN和任何值都不相等包括他自己;

如果两个操作数是数值型而且其值相等,则他们相等。0和-0是相等的;

如果两个操作数是字符串而且他们对应位置的字符相等,则他们相等,如果两个字符串编码不一样则他们不相等;

如果两个操作数指的是相同的类,数组和函数那么他们相等。如果他们指向不同的类,即使类属性相同,他们也不相等。

对于'==':

如果两个操作数他们有同样的类型,则按照上面严格相等来判断他们是不是相等。

如果他们类型不相等,会使用以下的规则和类型转换来判断他们是否相等:

如果一个值是null,另一个值是undefined,则他们相等。

如果一个是string型,另一个是数值型,那么就会将string型转换为数值型再进行比较。

true会转换为数值1,false会转换为数值0,来比较。

如果一个是类类型,另一个是数值或者字符,则会按照Javascript_备忘录2中的变量类型转换规则,转换之后再进行比较。

任何以上没提到的操作数的类型组合都是不相等的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: