Javascript_备忘录4
2013-01-04 17:21
218 查看
今天看了Expressions and Operators。有了C++的基础感觉学这章比较轻松,这次备忘的是Relational Expressions。其实最主要的是区分'=='和'==='这两个关系操作符的区别。简单的说'==='是严格相等,不会进行类型的转换,而'=='则会进行类型的转换。看下面的代码:
具体的区别是,对于'===':
如果两个操作数他们不具有相同的类型,则他们不相等;
如果两个操作数都是null或者undefined,那么他们相等;
如果两个操作数都是布尔型值true和false,那么他们相等;
如果其中一个操作数值是NaN,那么他们就不相等。NaN和任何值都不相等包括他自己;
如果两个操作数是数值型而且其值相等,则他们相等。0和-0是相等的;
如果两个操作数是字符串而且他们对应位置的字符相等,则他们相等,如果两个字符串编码不一样则他们不相等;
如果两个操作数指的是相同的类,数组和函数那么他们相等。如果他们指向不同的类,即使类属性相同,他们也不相等。
对于'==':
如果两个操作数他们有同样的类型,则按照上面严格相等来判断他们是不是相等。
如果他们类型不相等,会使用以下的规则和类型转换来判断他们是否相等:
如果一个值是null,另一个值是undefined,则他们相等。
如果一个是string型,另一个是数值型,那么就会将string型转换为数值型再进行比较。
true会转换为数值1,false会转换为数值0,来比较。
如果一个是类类型,另一个是数值或者字符,则会按照Javascript_备忘录2中的变量类型转换规则,转换之后再进行比较。
任何以上没提到的操作数的类型组合都是不相等的。
<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,那么他们相等;
如果两个操作数都是布尔型值true和false,那么他们相等;
如果其中一个操作数值是NaN,那么他们就不相等。NaN和任何值都不相等包括他自己;
如果两个操作数是数值型而且其值相等,则他们相等。0和-0是相等的;
如果两个操作数是字符串而且他们对应位置的字符相等,则他们相等,如果两个字符串编码不一样则他们不相等;
如果两个操作数指的是相同的类,数组和函数那么他们相等。如果他们指向不同的类,即使类属性相同,他们也不相等。
对于'==':
如果两个操作数他们有同样的类型,则按照上面严格相等来判断他们是不是相等。
如果他们类型不相等,会使用以下的规则和类型转换来判断他们是否相等:
如果一个值是null,另一个值是undefined,则他们相等。
如果一个是string型,另一个是数值型,那么就会将string型转换为数值型再进行比较。
true会转换为数值1,false会转换为数值0,来比较。
如果一个是类类型,另一个是数值或者字符,则会按照Javascript_备忘录2中的变量类型转换规则,转换之后再进行比较。
任何以上没提到的操作数的类型组合都是不相等的。
相关文章推荐
- JavaScript学习笔记(备忘录)
- doT.js——前端javascript模板引擎问题备忘录
- doT.js——前端javascript模板引擎问题备忘录
- JavaScript效果备忘录之输入后显示提示
- [技术备忘录]javascript 自动完成(jQuery方式) - 安羽. - 博客园
- JavaScript备忘录-闭包(2)
- Javascript_备忘录1
- 备忘录:推荐13款JavaScript图形和图表绘制工具
- JavaScript备忘录(0106更新ing......)
- Javascript_备忘录6
- Javascript_备忘录2
- 备忘录:javascript通过url向jsp页面传递中文参数乱码解决方法
- Javascript_备忘录1
- Javascript_备忘录3
- Javascript_备忘录3
- 备忘录:javascript通过url向jsp页面传递中文参数乱码解决方法
- Javascript 经典实用代码·备忘录
- JavaScript备忘录(1)——内置类型
- Javascript_备忘录5
- Javascript_备忘录5