数据类型转换方式


强制类型转换:

1.将变量类型转换为string类型:

通过toString()方法转换:

var num = 10;
console.log(typeof num); /*这里打印的结果为number*/
num.toString();
console.log(typeof num); /*这里打印的结果为number*/
console.log(num.toString()); /*这里打印的结果为10*/
console.log(typeof num.toString()); /*这里打印的结果为String*/
num = num.toString(); /*将变量num重新赋值*/
console.log(typeof num); /*这里打印的结果为String*/

分析代码:

先定义了一个全局变量num并赋值为10,该变量的类型为number。

接着对该变量使用toString()方法,再次检测该变量的数据类型依旧为number(因为没有重新赋值)。

然后再对 num.toString() 的结果进行了打印,返回了 “10” ,且检测其返回结果(10)的类型为String(这证明 toSring() 方法隐式return出了转换结果,而且需要一个变量进行接收)。

最后使用已定义的num变量接收了num.toSring return出来的结果。

toString() 方法不能对 null 和 undefined 类型进行转换,会报错!

通过String()函数转换:

    var num = 10;
    console.log(typeof num); /*这里打印的结果为number*/
    num = String(num);
    console.log(typeof num); /*这里打印的结果为string*/

通过String()函数也可以将变量类型强制转换为String类型,同样需要将其结果赋值给变量。

对 Number和Boolean 类型进行转换时,实际上它内部调用的是 toString() 方法。

不同的是:String()函数还可以对 null和undefined 类型的变量进行转换,直接返回字符串 "null" 和 "undefined" !

总结:将变量强制转换为String类型的方法有:①toString()  ②String()

2.将变量类型转换为Number类型:

通过Number()函数转换:

    var num = "10"; /*纯数字的字符串*/
    console.log(typeof num); /*这里打印的结果为string*/
    num = Number(num);
    console.log(num); /*这里打印的结果为10*/
    console.log(typeof num); /*这里打印的结果为number*/
    console.log('--------------------------');

    var message = "今年是2021年"; /*非纯数字的字符串*/
    console.log(typeof message); /*这里打印的结果为string*/
    message = Number(message);
    console.log(message) /*这里打印的结果为NaN*/
    console.log(typeof message); /*这里打印的结果为number*/
    console.log('--------------------------');

    var a = ""; /*空字符串*/
    console.log(typeof a); /*这里打印的结果为string*/
    a = Number(a);
    console.log(a); /*这里打印的结果为0*/
    console.log(typeof a); /*这里打印的结果为number*/
    console.log('--------------------------');

    var b = true; /*布尔值true*/
    console.log(typeof b); /*这里打印的结果为boolean*/
    b = Number(b);
    console.log(b); /*这里打印的结果为1*/
    console.log(typeof b); /*这里打印的结果为number*/
    console.log('--------------------------');

    var c = false; /*布尔值false*/
    console.log(typeof c); /*这里打印的结果为boolean*/
    c = Number(c);
    console.log(c); /*这里打印的结果为0*/
    console.log(typeof c); /*这里打印的结果为number*/
    console.log('--------------------------');

    var d = null; /*空值null*/
    console.log(typeof d); /*这里打印的结果为object*/
    d = Number(d);
    console.log(d); /*这里打印的结果为0*/
    console.log(typeof d); /*这里打印的结果为number*/
    console.log('--------------------------');

    var e = undefined; /*未定义值undefined*/
    console.log(typeof e); /*这里打印的结果为undefined*/
    e = Number(e);
    console.log(e); /*这里打印的结果为NaN*/
    console.log(typeof e); /*这里打印的结果为number*/
    console.log('--------------------------');

①当字符串为纯数字时直接返回该数字,当字符串中含有非数字时返回NaN(NaN,全称:not a number ,表示不是一个数字,但 typeof NaN 返回的是number。)

②当字符串为空串时返回 0

③当变量为布尔类型时:true返回 1 ,false返回 0

④当变量为null类型时返回 0

⑤当变量为undefined时返回 NaN

通过parseInt()转换:

    var sty = '200px的样式';
    sty = parseInt(sty);
    console.log(sty); /*输出结果为200*/
    console.log(typeof sty); /*number*/

    var std = '200.545px的样式';
    std = parseInt(std);
    console.log(std); /*输出结果为200*/
    console.log(typeof std); /*number*/

    var str = '我有200块';
    str = parseInt(str);
    console.log(str); /*输出结果为NaN*/
    console.log(typeof str); /*number*/

    var stx = '20乘10等于200';
    stx = parseInt(stx);
    console.log(stx); /*输出结果为20*/
    console.log(typeof stx); /*number*/

特点:它可以对字符串中的数字进行提取并返回,对于非字符串的转换它会先将其转换为字符串再进行转换

注意:当需要转换的值为“0X”等其他数开头时,某些低版本浏览器会将其当作某进制数来进行转换。

    可以通过给parseInt传参解决,parseInt(string,10)。string代表需要转换的变量10代表将该string参数当成几进制进行转换。

提取规则:1.非数字开头直接返回NaN。  2.以数字开头时提取数字,直到遇到非数字。 3.仅提取整数,小数点及后面的值不提取。

通过parseFloat()转换:

    var stx = '200.545的数据';
    stx = parseFloat(stx);
    console.log(stx); /*输出结果为200.545*/
    console.log(typeof stx); /*number*/

特点:它可以对字符串中的数字进行提取并返回,对于非字符串的转换它会先将其转换为字符串再进行转换

提取规则:和 parseInt() 大致相同,不同的是它可以提取小数(必须是有效小数)

总结:将变量强制转换为Number类型的方法有:①Number() ②parseInt() ③parseFloat()

 

3.将变量类型转换为Boolean类型:

通过Boolean()转换:

    var num = 0;
    num = Boolean(num)
    console.log(num) /* false */

    var num = NaN;
    num = Boolean(num)
    console.log(num) /* false */

    var num = 2;
    num = Boolean(num)
    console.log(num) /* true */

    var num = -2;
    num = Boolean(num)
    console.log(num) /* true */

    var str = "ssaiuhujakjs";
    str = Boolean(str)
    console.log(str) /* true */

    var str = ""; /*空串*/
    str = Boolean(str)
    console.log(str) /* false */

    var str = "   "; /*全空格的字符串*/
    str = Boolean(str)
    console.log(str) /* true */

    var str = null;
    str = Boolean(str)
    console.log(str) /* false */

    var str = undefined;
    str = Boolean(str)
    console.log(str) /* false */

    var str = Object;
    str = Boolean(str)
    console.log(str) /* true */

    var str = Array;
    str = Boolean(str)
    console.log(str) /* true */

    var str = Function;
    str = Boolean(str)
    console.log(str) /* true */

特点:1.非 0 和 NaN 的数字全部转换为 true

   2.除了空字符串为 false,其他任何字符串都转换为 true

   3.null 和 undefined 都转换为 false

   4.对象(Object、Function、Array)都转换为 true

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM