js中数据类型的转换

    技术2022-07-12  68

    在js中数据类型转换只有3种,转换的话分强制转换和自动转换,下面我来分别介绍下

    1.转换为String类型

    一.强制转换

    1.Number类型和Boolean转string类型(调用toString()方法)

    var a = 10, b = true; a.toString();//'10' b.toString();//'false' a.toString('2');//'1010' a.toString('8');//'12' a.toString('16');//'a'

    采用 Number 类型的 toString() 方法的基模式,可以用不同的参数输出数字,例如二进制的参数是 2,八进制的参数是 8,十六进制的参数是 16! 2.null和underfined转string类型

    var a = null, b = undefined; a.toString();//报错 b.toString();//报错 String(a);//null String(b);//underfined

    null和underfined没有toString()方法所以会报错,它只能调用String()方法转成对应的字符串! 2.Object转string类型

    var a = {p:1}, b = [1,3,4]; a.toString();//"[object Object]" b.toString();//"1,3,4" String(a);//"[object Object]" String(b);//"1,3,4"

    2种结果都是一样的,所以可以总结一下,toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined!

    二.自动转换

    如果是字符串和任意类型相加的话,都会转成字符串类型然后拼接

    console.log("2"+1);//"21" console.log("2"+"1");//"21" console.log("2"+null);//"2null" console.log("2"+undefined);//"2underfined" console.log("2"+{p:1});//"2[object Object]" console.log("2"+[1,2,3]);//"21,2,3" console.log("2"+function(){});//"2function(){}" console.log("2"+true);//'2true'

    2.转换为Boolean类型

    一.强制转换

    它的转换比较简单,你只要记住,除了“” “”,null,underfined,+0,-0,NaN转换为false,其他的转换都是true!

    console.log(Boolean(null));//false console.log(Boolean(undefined));//false console.log(Boolean(NaN));//false console.log(Boolean(""));//false console.log(Boolean(+0));//false console.log(Boolean(-0));//false console.log(Boolean({}));//true console.log(Boolean([]));//true console.log(Boolean(new Boolean(false)));//true
    二.自动转换

    1.当有if和elseif语句,会自动调用Boolean函数将其自动转换成布尔值!

    var a =10; if (a) { //.... }

    2.当有逻辑运算符!或者!!情况下会自动转成布尔值!,!会先转成布尔值再取反,!!会先转成布尔值再取二次反,其实原理和调用Boolean函数一样

    var a =10; if (!a) { //.... }; if (!!a) { //.... }

    3.转换为Number类型

    一.强制转换

    1.Number()函数

    console.log(Number(123));//123 console.log(Number("123"));//123 console.log(Number("123abc"));//NaN console.log(Number(null));//0 console.log(Number(undefined));//NaN console.log(Number(""));//0 console.log(Number({p:1}));//NaN console.log(Number([1,2,3]));//NaN console.log(Number([1]));//1 console.log(Number(true));//1 console.log(Number(false));//0

    可以得出结论:纯数字或者纯数字的字符串不用说了,如果有不是数字的字符串,对象除了单数字数组,underfined,NaN转完都是NaN,其他的可以先转成布尔值,true就是1,false是0!

    2.parseInt()函数 和parseFloat()函数

    console.log(parseInt(123));//123 console.log(parseInt("123"));//123 console.log(parseInt("123abc"));//123 console.log(parseInt("abc123"));//NaN console.log(parseInt(""));//NaN console.log(parseFloat("1.23"));//1.23 console.log(parseFloat("1.23abc"));//1.23 console.log(parseFloat("abc1.23"));//NaN console.log(parseFloat(""));//NaN

    可以得出结论:这两个函数只要首位不是数组都是NaN,Numer函数还是比它们严格多了,只要有一个字符无法转成数值,整个字符串就会被转为NaN,对于空字符串处理也不一样,Numer函数返回的是0! parseInt()第二个参数和Number()函数原理类似,都是转换成对应的进制值,这里就不说了!

    二.自动转换

    1.字符串类型除了加,其他类型加减乘除都会自动转换成对应的数字类型!

    console.log(1+true);//2 console.log(1-true);//0 console.log(1*null);//0 console.log("1"*2);//2 console.log(false / 1);//0 console.log("abc" / 1);//NaN console.log(1*[]);//0

    2.一元运算符 一元运算符有+,++,-,–等

    var a =true; b=[]; console.log(+a);//1 console.log(-a);//-1 console.log(++a);//2 console.log(+b);//0 console.log(-b);//-0 console.log(++b);//1

    一个+的话表示直接转换成数字类型,二个+的话表示直接转换成数字类型再加1,一个-表示转换成数字类型后加个负号,当然-0还是等于0,二个-的话表示直接转换成数字类型再减1!

    Processed: 0.024, SQL: 9