千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > JavaScript中如何进行隐式类型转换?

JavaScript中如何进行隐式类型转换?

来源:千锋教育
发布人:wjy
时间: 2022-10-09 17:49:42 1665308982

  首先要介绍ToPrimitive方法,这是 JavaScript 中每个值隐含的自带的方法,用来将值 (无论是基本类型值还是对象)转换为基本类型值。如果值为基本类型,则直接返回值本身;如果值为对象,其看起来大概是这样:

JavaScript中如何进行隐式类型转换1

  type的值为number或者string。

  1. 当type为number时规则如下:

  调用obj的valueOf方法,如果为原始值,则返回,否则下一步;调用obj的toString方法,后续同上;抛出TypeError 异常。

  2. 当type为string时规则如下:

  调用obj的toString方法,如果为原始值,则返回,否则下一步;调用obj的valueOf方法,后续同上;抛出TypeError 异常。

  可以看出两者的主要区别在于调用toString和valueOf的先后顺序。默认情况下:

  如果对象为 Date 对象,则type默认为string;其他情况下,type默认为number。

  总结上面的规则,对于 Date 以外的对象,转换为基本类型的大概规则可以概括为一个函数:

JavaScript中如何进行隐式类型转换2

  而 JavaScript 中的隐式类型转换主要发生在+、-、*、/以及==、>、<这些运算符之间。而这些运算符只能操作基本类型值,所以在进行这些运算前的第一步就是将两边的值用ToPrimitive转换成基本类型,再进行操作。

  以下是基本类型的值在不同操作符的情况下隐式转换的规则 (对于对象,其会被ToPrimitive转换成基本类型,所以最终还是要应用基本类型转换规则):

  1. +操作符 +操作符的两边有至少一个string类型变量时,两边的变量都会被隐式转换为字符串;其他情况下两边的变量都会被转换为数字。

JavaScript中如何进行隐式类型转换3

  2. -、*、\操作符

  NaN也是一个数字

JavaScript中如何进行隐式类型转换4

  3. 对于==操作符

  操作符两边的值都尽量转成number:

JavaScript中如何进行隐式类型转换5

  4. 对于<和>比较符

  如果两边都是字符串,则比较字母表顺序:

JavaScript中如何进行隐式类型转换6

  其他情况下,转换为数字再比较:

JavaScript中如何进行隐式类型转换7

  以上说的是基本类型的隐式转换,而对象会被ToPrimitive转换为基本类型再进行转换:

JavaScript中如何进行隐式类型转换8

  其对比过程如下:

JavaScript中如何进行隐式类型转换9

  又比如:

JavaScript中如何进行隐式类型转换10

  运算过程如下:

JavaScript中如何进行隐式类型转换11

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT