素材巴巴 > 程序开发 >

js类型转换与运算符(最核心)

程序开发 2023-09-07 06:22:49

类型转换与运算符的联系

类型转换分为:显示转换和隐式转换

显示转换(强制类型转换):

使用String( ) , Number( ), Boolean( ) 或者Object( )函数进行转换

隐式转换:

(当js遇到某些运算符或者语句条件时会做隐式转换)

转换规则,如下表所示:(图来自js权威指南)

通常我们开发处理更多的是原始值之间的转换(下面一点讲到),那对象转换为原始值,这里面的过程又是怎样的呢?

对象转换为原始值

下面代码,思考一下输出过程:

  • 对象---》数字,主要是通过valueOf()
  • 对象的转换,主要是用toString() 和valueOf()方法的二选其一哪个优先调用或者是结合调用。
  • 像某些对象,如Date日期类,它具有toString() 和valueOf()方法,只是一般行为输出默认先使用toString()
  • 原始类型之间的转换

    算术运算符: + - * / %

    ( - * / %)这四个运算符,会将非数字的一方或双方进行隐式转换为数字 ,再进行运算,如果转换不成功,则显示为NaN

    + 这个运算符:

    扩展:

    比较运算符( > < >= <=)

    相等运算符 (== != === !==)

    1. undefined和null与其他操作数做相等判断时不进行类型转换(特指==或!=)

    2. 对象在做==比较时等同于===

    3. ==如果有一个操作数时布尔值,则再比较==之前先将其转换为数值

    扩展:

    从此我们发现

    1. 比如 if 语句中的条件,在没有限定相等操作符时,会自动使用Boolean()得出true或false.

    2. 而使用({ })==true 或者([ ])==true 可能会导致意想不到的错误,这两个会先调用valueOf( )后再进行比较。({ })调用valueOf()得到{ },或者说转换位数字不成功,([])调用valueOf()得到[ ],或者说转换数值成功为0,所以==false.

    3. == 和Boolean()不能混淆使用

    总结:

    使用显示方式类型转换可能更能达到我们的预期,而隐式转换则更为灵活简便,在这些运算符中,每种运算符都会有各自的偏好,所以使用的时候需要更加留意。

    以上为个人学习研究心得,如有不正确或者有别的见解的地方,欢迎下方留言评论交流分享

    本人及工作室承接  软件开发、技术咨询、代写代码(大小项目)、软件模板出售、项目教学、毕业实践项目

    个人微信:laoliukaifa                  工作室网站:www.globalbuy123.com   


    标签:

    上一篇: Spring4:泛型依赖注入 下一篇:
    素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。