类型转换

 类型转换:  显示类型转换
                隐式类型转换
 
前提:知道数据类型
    js数据类型包括:原始类型、对象
    原始类型:Boolean、String、Number、Undefined、Symbol、null
    对象:Object
 
 显示类型转换与隐式类型转换都是通过  Number函数、String函数、Boolean函数  三个进行类型转换的。
    显示类型转换:
      Number函数转换规制:
        一、对原始类型转换
          1、对数值,转换后还是原来的值。
          2、对字符串,如果是纯数值的字符串类型,则转换为对应的数值,如果是混合则转换为NaN,没有的情况下转换为0。
          3、对布尔值,true转换为1,false转换为0
          4、对于Undefined,直接转换为NaN
          5、对于null,直接转换为0
        二、对对象类型转换
          1、若是对对象类型转换,会先调用对象本省的valueOf方法,《valueOf方法:1、如果该方法返回原始类型的值(数值、字符串、布尔值),
          则会对返回的值使用Number方法(遵循Number函数对原始类型的转换规制),至此。2、如果该方法返回复合类型,会调用对象本身的toString()方法,
          如果toString()方法返回的是原始类型的值,会调用Number方法,至此。若返回的是复合类型,则会报错。》

      String函数转换规制:
        一、对原始类型转换
          1、对数值,转换为响应的字符串。
          2、对字符串,转换后还是字符串。
          3、对布尔值,true转换为'true',false转换为'false'
          4、对于Undefined,直接转换为'undefined'
          5、对于null,直接转换为'null'
        二、对对象类型转换
          1、若是对对象类型转换,会先调用对象本身的toString()方法,《toString()方法:1、如果该方法返回原始类型的值,则会对返回的值使用String()
          方法(遵循String()函数对原始类型的转换规制),至此。2、如果该方法返回复合类型,会调用对象本身的valueOf()方法,如果valueOf()方法          
          返回的是原始类型的值,会调用string()方法,至此。若返回的是复合类型,则会报错。》
          
      Boolean函数转换规制:
        一、对原始类型转换
          Boolean只需记住几个转换为false外,其余全部为true
          -0,+0,undefined,NaN,''(空) 这几个都为false,其余都是true。
 
 隐式类型转换:程序自动进行转换。
      四则运算(+、-、*、/)、程序本身的如console、alert等。
 
    //Number函数
    // 一、原始类型转换
    // 数值
    const a = 100
    console.log(Number(a))
    // 字符串
    const b = '101'
    const c = '101zbc'
    console.log(Number(b))
    console.log(Number(c))
    // 布尔值
    const d = true
    const e = false
    console.log(Number(d))
    console.log(Number(e))
    // 对于Undefined
    const f = undefined
    console.log(Number(f))
    // 对于null
    const g = null
    console.log(Number(g))
    // 二、对象类型
    const h = {
      a:1
    }
    // 过程规则
    // const abc = h.valueOf() // {a: 1}
    // const abe = abc.toString() // "[object Object]"
    // abe.toString() // NaN
    console.log(Number(h)) //NaN
    console.log('-------------------------------------------------')
// ------------------------------------------------------------------------------------
    //String函数
    // 一、原始类型转换
    // 数值
    const sa = 100
    console.log(String(sa))
    // 字符串
    const sb = '101'
    const sc = '101zbc'
    console.log(String(sb))
    console.log(String(sc))
    // 布尔值
    const sd = true
    const se = false
    console.log(String(sd))
    console.log(String(se))
    // 对于Undefined
    const sf = undefined
    console.log(String(sf))
    // 对于null
    const sg = null
    console.log(String(sg))
    // 二、对象类型
    const sh = {
      a:1,
      toString:function(){
        return {b:12}
      }      
    }
    // // 过程规则
    // const abc = sh.toString() // {b:12}
    // const abe = abc.valueOf() // 非原始类型,报错
    console.log(String(sh))     
// ------------------------------------------------------------------------------------

 

posted @ 2020-12-16 00:43  溪过山丘  阅读(163)  评论(0)    收藏  举报