13-数据类型转换

一、转为Number类型

1.parseInt()

遇到小数点,直接舍弃小数点后面的,不存在四舍五入

2.parseFloat()

可以转换小数

3.Number()

  • 1.String
    • 1.如果字符串中是纯数字,则直接将其转换为数字。

    • 2.在转换时会先判断能否转换成数字,只要要字符串中包含了非数字的内容(字母,中文)(不包括小数点),则转换为 NaN。

    • 3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0。

  • 2.Boolean
    • 1.false转为0
    • 2.true转为1
  • 3.null
    • 结果是0
  • 4.undefined
    • 结果是NaN

4.parseInt()和parseFloat()

  • 1.String
    • 1.如果字符串中有无法转换的值,就停止转换
      • 值在开头:直接返回NaN
      • 值不在开头,就转换这个值前面的数字,值后的不管是什么自动舍弃
    • 2.如果字符串是一个空串或者是一个全是空格的字符串,结果是NaN。
  • 2.Blooean
    • 会自动识别为字母,所以结果是NaN
  • 3.null和undefined
    • 会自动识别为字母,所以结果是NaN
  • 4.别的进制会自动转为十进制
    <script>
    var num = 10,
        str = '666.66',//纯数字字符串
        str1 = '6a6',//数字在中间
        str2 = 'a66',//数字在开头
        str3 = '',//空
        boo = false,
        boo2 = true,
        a = undefined,
        b = null;
        // parseInt不保留小数
        console.log(parseInt(str));//666
        console.log(parseInt(str3));//NaN
        // parseFloat和parseInt不能转换boolean类型,会识别为字母
        console.log(parseInt(boo2));//NaN
        console.log(parseFloat(str));//666.66
        // 遇到不能转换的字符时,就停止转换,只转换该字符前面的
        console.log(parseFloat(str1));//6
        // 如果不能转换的值在开头,就会直接返回NaN
        console.log(parseFloat(str2));//NaN
        console.log(parseFloat(str3));//NaN

        console.log(Number(str));//666.66
        // Number()转化时,会先判断要转换的内容是否有不能转位数字的值,如果有,就直接NaN
        console.log(Number(str1));//NaN
        console.log(Number(str2));//NaN
        console.log(Number(str3));//0
        console.log(Number(boo));//0
        console.log(Number(a));//NaN
        // Number转换null是0
        console.log(Number(b));//0
        console.log(parseInt(b));//NaN
        console.log(parseInt(a));//NaN

        console.log(parseFloat(0x100));//256
  </script>

5.隐式转换

有特殊情况:
null转换时会转换为0
undefined转换时会转换为NaN

        console.log(+null);//0
        console.log(+undefined);//NaN
  <script>
        var str = '666';
        var a = false;
        // -*/
        console.log(typeof (str - 0));
        console.log(typeof (a * 1));
        console.log(typeof (str / 1));

        //正负号
        console.log(typeof (+a));
        console.log(typeof (-str));

        //自增自减
        console.log(typeof (++a));
        console.log(typeof (str++));
  </script>

二、转为String类型

1.String()强制转换,什么都转

2.变量.toString()

  • 1.null和undefined无法调用这个方法
  • 2.括号里面可以跟想转换的进制
  <script>
    var num = 100,
        boo = false,
        a = null,
        b = undefined;

    console.log(num.toString());//10
    console.log(boo.toString());//false
    // 括号里可以跟想转换成几进制
    console.log(num.toString(2));//1100100
    // console.log(a.toString());//Cannot read property 'toString' of null
    // console.log(b.toString());//Cannot read property 'toString' of undefined
    console.log(String(num));//10
    console.log(String(boo));//false
    console.log(String(a));//null
    console.log(String(b));//undefined
  </script>

3.隐式转换

任何类型与''拼接,都会转为字符串

三、转为Boolean

1. Boolean()

转为false的值:''、0、undefined、null、NaN、fasle、不成立的表达式

  <script>
    console.log(Boolean(''));//false
    console.log(Boolean(0));//false
    console.log(Boolean(undefined));//false
    console.log(Boolean(null));//false
    console.log(Boolean(NaN));//false
    console.log(Boolean(false));//false
    console.log(Boolean(1 + 1 < 1));//false
    
    // Boolean转换引用数据类型时,哪怕是空的,都返回true!!!!
    console.log(Boolean([]));//ture
    console.log(Boolean({}));//ture
  </script>

2.隐式转换

  <script>
    // 隐式转换
    console.log(!!2);//true
    console.log(!!'');//false
  </script>

四、typeof

  <script>
    console.log(typeof 1);//number
    console.log(typeof '');//string
    console.log(typeof false);//boolean
    console.log(typeof []);//object
    console.log(typeof function(){});//function
    console.log(typeof {});//object
    // null是一个空对象,所以返回object
    // 这是js遗留的一个bug
    console.log(typeof null);//object
    console.log(typeof undefined);//undefined
  </script>

原文地址:https://www.cnblogs.com/xiaoaitongxue/p/12733917.html