码迷,mamicode.com
首页 > 其他好文 > 详细

关于比较==操作符中的强制类型转换

时间:2017-10-02 21:35:09      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:tostring   class   efi   其他   参数   color   ram   不同   强制类型转换   

1、在numberstring进行比较,需要将string类型数据进行toNumber转化成number类型进行比较

42 == ‘42’ //true

//即type(x) 如果是number类型,type(y)是string类型,比较 x == toNumber(y)

2、boolean类型和其他数据类型进行比较,将true转换成1,fasle转换成0

false == 0  //true

true == 1 //true

true == 2 //false

true == ‘2‘ //false

//因为true被转换成number类型,为数字1,在 1==‘2’ 比较里,肯定是返回false

3、nullundefined

null == undefined //true

function foo(param) {
  if(param == null) {
    // some code      
  }      
}

//所有有时也会用在判断函数中是否传入一个参数 

null == 0 //false

null == false //false

undefined == 0  //false

undefined == false //false

//null和undefined 和其他数据使用==比较操作符都返回false

 

4、对象其他类型,将对象进行toPrimitive操作进行转化,当对象是date类型时

先进行toString()操作,如果返回的是基本类型数据,那么返回该数据,否则进行valueOf()操作

当对象是数组或者普通对象时,先valueOf操作,如果返回的数据不是基本(值类型,非引用类型)类型数据,那么进行toString操作

[] == 0  //true

[] == ‘‘ //true

//数组是对象,对[]进行一次valueOf操作,得到的还是原数组,所以继续进行toString操作,得到空字符串‘ ‘
 在 [] ==0 比较中,空字符串被转换成数字0,所有 0 == 0 ,而 ‘ ‘ ==‘ ‘自然也是true

 

总结: 也就是说,在==操作符进行比较的过程中,如果两方数据类型不同,总是需要对其做类型转换

最后比较的类型总是number或者string

关于比较==操作符中的强制类型转换

标签:tostring   class   efi   其他   参数   color   ram   不同   强制类型转换   

原文地址:http://www.cnblogs.com/subyang/p/7622270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!