<返回更多

javascript 类型的隐式转换

2019-11-06    
加入收藏

先看一道面试题 让 a==1&&a==2&&a==3,这个问题主要查看对js隐式转换的理解,首先a不可能是一个原始类型,那么a只有可能是个对象类型了,查阅犀牛书52页《3.8.3对象转换为原始值》章节得知,对象转换到字符串或者数字类型调用了toString()和valueOf()两个方法中的一个,具体细节如下

  1. 对象转换为字符串

如果对象具有toString()方法,则调用这个方法,如果它返回一个原始值,将这个值转换为字符串类型,例如:

javascript 类型的隐式转换

对象转换为字符串例子1

如果对象没有toString()方法,或者这个方法并不返回一个原始值,那么就调用valueOf()方法,如果valueOf()返回原始值,则将它转换为字符串类型,例如:

javascript 类型的隐式转换

对象转换为字符串例子2

对象转换为数字的过程调用valueOf()方法返回一个原始值,并转换为数字类型,如果没有valueOf()方法,则调用toString()方法,过程同对象转换为字符串相似

javascript 类型的隐式转换

对象转换为数字例子

详细的js类型转换方式看下表格:

javascript 类型的隐式转换

 


javascript 类型的隐式转换

 

== 相等比较

  1. 一个值是undefined,另一个值是null,则它们相等,即 undefined == null;
  2. 一个值是数字,另一个值是字符串,则先将字符串转换为数字,然后比较, '123' == 123 转换为123 == 123 // true
  3. 如果有一个是true,则先转换为1,再比较,false则转换为0再比较
  4. 如果有一个是对象,另一个是原始类型,见本章所述

=== 相等比较

  1. 先查看类型是否相等,不相等就false
  2. null === undefined // false
  3. NaN === NaN // false
  4. 0 === -0 // true
  5. 先查看类型是否相等,不相等就false,相等就查看值是否相等,原始类型比较的是值,对象类型则比较地址是否相等,不相等就false,相等就true

各位观众老爷,以上文章和图片若有看不明白的地方可以私聊或者留言

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>