天天看点

JS里默认和常用转换

JS里的六大简单数据类型

  • string

    字符类型
  • number

    数字类型
  • boolean

    布尔类型
  • symbol

    ES6语法新增
  • undefined

    声明了变量但未给值
  • null

    空数据

JS里的负责数据类型

  • object

    数据类型,包括JavaScript数组,正则都是obj类型

默认数据转化

Other => Bool
  • 转布尔
    • 1、像if-else这样的表达式
    • 2、boolean()方法显式的转换
  • 9种其他值转换后对于的假值
    • 1、""
    • 2、''
    • 3、``
    • 4、0
    • 5、-0
    • 6、NaN
    • 7、false
    • 8、null
    • 9、undefined
Other => Number
  • 转数字
    • 1、Number(

      val

      )方法
      • val如果为布尔值,真假则会被转换为1和0
      • val如果是数字,那就是简单的传入和返回
      • val如果是null,则返回0
      • val如果是undefined,则返回NaN
      • val如果是字符串则全数字转数字,注意进制,空串转为0,非全数字转为NaN
    • 2、parseInt(

      val

      )
      • 传入的参数,若是字符串,则从第一个字符开始检索,保留到非数字,例如

        paserInt('1234abcd5')

        结果为1234
      • 若参数为数字,则会看是否为小数,若为小数则会保留整数。
      • ES5还提供第二个参数,第二个参数指定了,传入的参数为多少进制的数字,输出的数字都是十进制
    • 3、parseFloat(

      val

      • 该参数只解析十进制数,没有第二个参数
      • 该方法为保留尽可能多的数值,例如123hello会被转换为123
      • 该方法会将参数转换为小数
    • 4、静态方法,该方法可以直接调用
      • Number.isInteger(

        val

        )判断一个值是否为整数,3和3.0是同一个值,且该方法不会对参数进行自动类型转换,所以Number.isFinite('23');的结果为false
      • Number.isFinite(

        val

        )如果参数是数字,结果为ture,该方法不会自动类型转换
    • 5、实例方法,该方法由实例方法调用
      • toFixed()该方法按照指定的小数位进行四舍五入的字符串表示,这个方法的结果类型为字符串,参数为保留小数的个数
      • toExponential()返回四舍五入后的指数表示法,参数表示转换后的小数位数
      • toPrecision()接收一个参数,即表示数值的所有数字位数,不包括指数部分,自动调用toFiexd()或toExponential(),参数为1-21,不传参或者为undefined则相对于调用toString方法
  • 转字符串
    • toString方法
      • null和undefined并不能通过toString()函数来转换成相应的字符串,参数为转换成几进制
    • 利用+运算符和字符串进行运算(主要方法)
    • 通过String()方法来进行转换
  • 1、隐形转换
    • 加号运算符的式子中,有字符串则变成字符串,没有字符串但不全为数字则为NaN,布尔值会转为1和0,全为数字则得出Number类型
    • 除了加号的其他运算符,如减号-,乘号*,除/,求余%,都会将数据转换为数字类型
    • 当预期为布尔值的时候,会将前面的九种数据类型转换为false
    • 转换技巧
      • 转成字符串

        a = "" + 数据

      • 转换布尔

        !数据类型

      • 转换数值

        数据类型*1

var sum = 1 + 1; // 结果为2,因为两者都是Number类型的数据
    var sum = 1 + true; // 结果为2,因为Number + true,布尔会被转化为1和0
    var sum = 1 + null; // 结果为1,因为Number + null,没有字符串,且我希望得到数值结果,所以null会转为Number,null转为Number的结果为0,所以1+0的结果为1
    var sum = true + null; // 结果为1,因为布尔转为1,null转为0,所以1+0为1
    var sum = "" + 任意数据类型; // 结果都为字符串,如果是利用toString()转换则不能转null和undefined!注意这点。
           
var sum = 任意数据类型 * 1; // 如果能计算出来,则为具体数值,如果算不出来,例如undefined和1进行运算这样的得不出来结果,就会得到NaN
    // NaN 的意思是Not a Number,意思是我想要得到一个数字,但是实际得到的却不是一个数字,就会得到NaN,NaN的数据类型也是Number