这些比较规则,你未必都知道

Posted 心欲无痕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这些比较规则,你未必都知道相关的知识,希望对你有一定的参考价值。

  相等运算符:

  使用相等运算符来比较两个值是否相等,相等返回true,否则返回false。

  1、对于简单类型来说,如数字、布尔值、字符串,比较的是两者的值是否相等。

  1==1  // true

  2==1  // false

  true==true  // true

  true==false  // false

  "ajax"=="ajax"  // true

  "ajax"=="AJAX"  // false

  "ajax"=="javascript"  // false

 

  2、对于引用类型来说,如对象、数组等,比较的是两者的引用是否相等。也就是说,如果有两个数组,它们所包含的的元素是一样的,但是比较的结果仍然为false。

  var a = new Array(1,2,3);

  var b = a;

  var c = new Array(3,1,2);

  var d = new Array(1,2,3);

  a==b  // true

  a==c  // false

  a==d  // false

  

  更详细的比较规则是:当两个值的类型相同时,就比较它们的值或者引用是否完全相等,当两个值类型不同时,他们也有可能相等。

  * null与undefined相等。

  * 数字和字符串比较,先将字符串转换为数字,再比较值。

  * 布尔值和其它类型的值比较时,先将布尔值转换为数字再比较。true转换为1,false转换为0。

  * 当数字、布尔值或字符串与对象比较时,先将对象转换为简单类型再比较。javascript的内置对象一般会先尝试valueOf()转换,再尝试toString()转换。比较特殊是是Date类,它会先执行toString()转换。

  var a;

  null==a  // true

  1=="1"  // true。将字符串1转换为数值1,再比较

  1==true  // true。将布尔值true转换为1,再比较

  0==false  // true。将布尔值false转换为0,再比较

  "1,2,3"==[1,2,3]  // true。

  

  补充:

  * javascript中只要是对象都存在toString方法,该方法作用是:将调用该方法的值转换为字符串返回。

  *valueOf()方法用于返回对象的原始值,该方法是数组对象的默认方法。

  

以上是关于这些比较规则,你未必都知道的主要内容,如果未能解决你的问题,请参考以下文章

这些MOS管的特点和分类,你未必全都知道

分析TVS管和肖特基二极管的特性原理,这些你未必全都知道

知道你懂EventLoop,但这个题你未必会

你未必知道的12个Chrome DevTools使用技巧

关于MySQL,你未必知道的!

JavaScript 优雅的实现方式包含你可能不知道的知识点