实例分析JS中的相等性判断=====和Object.is ()

  

相信刚接触JS的人都会被他的想等性判断给整糊涂,看看下面代码,你能答对几个?

        南===南//假的   南==南//假的   对象。(南南)//是真的吗   0==假//真   1==true//真实的   号(null)===0//真实的   null==0//假      

Javascript提供了三种不同的值比较操作,分别是严格相等,宽松相等,以及Object.is,希望看完下面的内容,能够彻底弄清楚他的判断逻辑。

  


  

  

1,如果x的数据类型和y的数据类型不相同,返回假;
  

  

2,如果x是数字类型
  

  
      <李> x是南返回假李   <李> y是南返回假李   <李>的x值和y的值相等,返回真正的李   <李> x是+ 0,y是0,返回真正的李   <李> x是0,y是+ 0,返回真正的李   <李>否则返回假李   
  

3,其他类型参照SameValueNonNumber (x, y)
  

  
      <李>断言:x, y不类是数字型;李   <李>断言:x, y的数据类型相同,李   <李> x是未定义的,y是未定义的返回true;李   <李> x是null, y是null,返回true;李   <李> x是字符串类型,当且仅当x, y字符序列完全相同时(长度相同,每个位置上的字符也相同)返回真,否则返回假;李   <李>如果x是布尔类型,当x, y都为真或者都为假时返回真,否则返回假;李   <李>如果类x是象征型,当x, y是相同的符号值,返回真,否则返回假;李   <李>如果x, y是同一个对象值,返回真,否则返回假;李   
        南===南//假的   未定义===定义//真实的   null===null//真实的   未定义===null//假的   之前      


  

  
      <李>如果x, y的类型相同,返回x===y的结果,李   <李>如果x是null, y是未定义的,返回正确的;   <李>如果x是未定义的,y是null,返回正确的;   <李>如果x是数值,y是字符串,返回x==当时(y);李   <李>如果x是字符串,y是数值,返回,当时(x)==y;李   <李>如果x是布尔类型,返回,当时(x)==y的结果,李   <李>如果y是布尔类型,返回x==当时(y)的结果,李   <李>如果x是字符串或数字或符号中的一种并且类型(y)是对象,返回x==ToPrimitive (y)的结果李   <李>如果类型(x)是对象并且类型(y)是字符串或数字或符号中的一种,返回ToPrimitive (x)==y的结果李   <李>其他返回假李   
        12==0 xc的//真的,0 xc是16进制   12==//真正的“12”//12==12 c”假,说明,当时转换是用的数量()方法      

注意:         数量===0(零)   但是   null==0//假,      

实例分析JS中的相等性判断=====和Object.is ()

  

<强> 2.1,当时将一个值转换为数值类型
  

  

详情参考数值类型转换

  
      <李>如果是布尔类型,真正返回1,假返回0;李   <李>如果是数值,只是简单的传入返回;李   <李>如果是null,返回0   <李>如果是未定义的,返回南,李   <李>如果是字符串,字符串如果只包含数字,则将其转换成十进制数,如果是有效的浮点格式,将其转换成对应的浮点数值;如果是二进制或十六进制将其转换成对应的十进制数值;李   <李>如果是对象,调用对象的返回对象的值()方法,然后依照前面规则转换,如果的返回值是南,则调用toString()方法,再依照前面的规则转换返回的字符串李   
  

<强> 2.2 ToPrimitive
  

  

toPrimitive (A)通过尝试调用一个的A.toString()和A.valueOf()方法,将参数一转换为原始值(原始);
  JS中原始类型有:数字、字符串、布尔值、空,未定义的;

  

不同类型对象的返回对象的值()方法的返回值:

  

           对象   返回值               数组   返回数组对象本身。         布尔   布尔值         日期   存储的时间是从1970年1月1日午夜开始计的毫秒数UTC         函数   函数本身         数量   数字值         对象   对象本身。这是默认情况,可以覆盖自定义对象的的方法         字符串   字符串值            

实例分析JS中的相等性判断=====和Object.is ()