• js数据类型转换


    JavaScript 中,变量可以赋予任何类型的值。但是运算符对数据类型是有要求的,如果运算符发现,运算子的类型与预期不符,就会自动转换类型。数据类型除了可以自动转换以外,还可以手动强制转换。
     
    数据类型的转换
    • 强制转换
    • 隐式转换
    typeof 判断数据类型
    typeof操作符是用来检测变量的数据类型。对于值或变量使用typeof 操作符会返回如下字符串。
    1 var type=typeof "aaa";
    2 console.log(type);

    一:强制转换


    1、 强制转换为 - 字符串
    1).String() String(数据)
    1 var num=10;
    2 var a=num.toString(2);
    3 console.log(a);
    4 console.log(typeof num);
    5 console.log(typeof a);
    2).toString()  .toString(进制)
    可以将任意数字转换为任意进制
    toString 可以将任意数字转换为任意进制,进制必须大于等于2,小于等于36;
    最小是2进制,最大是36进制,因为数字(10)字母(26)共36个;
    1 var color=2552 var c=color.toString(16);
    3 console.log(c); // ff
    3).toFixed()

    3).toFixed()   .toFixed(小数点后几位);

    将数值转换为字符串,并按照小数点四舍五入,保留位数,但是有精度误差。
    1 var num=10.35;
    2 var a=num.toFixed(1);3 console.log(a); //10.3
    1 var num=0.5‐0.2;
    2 console.log(num==0.3);
    3 console.log(0.3‐0.2==0.1);
    2、强制转换为 - 数值
    Number()
    Number(数据)
    NaN 非数值 类型是number
    1) 纯字符---》 NaN
    1 var str="你好";
    2 var num=Number(str);
    3 console.log(num); //NaN
    2) 纯数字---》数字
    1 var str="你好";
    2 var num=Number(str);
    3 console.log(num);
    3) 部分数字,部分字符---》NaN
    1 var str="12";
    2 var num=Number(str);
    3 console.log(num);
    4) 布尔值---》数字 true--->1 false--->0
    1 var str="1a";
    2 var num=Number(str);
    3 console.log(num);
    5) undefined---》NaN
    1 var b=false;
    2 var num=Number(b);
    3 console.log(num);
    6) null---》0
    1 var a;
    2 var num=Number(a); 3 console.log(num);
     
    3、强制转换为 - 整数
    1)parseInt(str)
    a:纯字符---》 NaN
    1 var str="你好";
    2 var num=parseInt(str);
    3 console.log(num); //NaN
    b:纯数字---》数字
    1 var str="20";
    2 var num=parseInt(str);
    3 console.log(str); // num :20
    c:部分数字,部分字符---》 通过parseInt转换数值可以从开始转换到字符前为止变成数值,如果第一位是字符,返回NaN
    1 var str1="16a";//部分数值部分字符 按照10进制转换16
    2 var num=parseInt(str1);
    3 console.log(num1);
    4 var str2="a16";//部分数值部分字符 NaN
    5 var num=parseInt(str2);
    6 console.log(num2);

    d:布尔值---》NaN

    1 var str=false;
    2 var num=parseInt(str);
    3 console.log(num);
    e:undefined---》NaN
    1 var str;
    2 var num=parseInt(str);
    3 console.log(num);
    f:null---》NaN
    1 var str=null;
    2 var num=parseInt(str); 3 console.log(num);
    2)parseInt(字符,进制)
    可以将指定进制方式字符串转换为10进制,是toString()逆转换
    例1:parseInt(str,2); 将2进制字符串转换为10进制数值
    1 var str="1010";
    2 var num=parseInt(str,2);
    3 // num :10

    例2:parseInt(str,16); 将16进制字符串转换为10进制数值

    1 var str="FF";
    2 var num=parseInt(str,16);
    3 console.log(num);
    4 // #FF0000
    4、强制转换为 - 小数
    parseFloat() 可以保留小数位
    强转小数和parseInt类似
    1 var str1=25.541;
    2 var str2=25.541;
    3 var num1=parseInt(str1);
    4 var num2=parseFloat(str2);
    5 console.log(num1); //25
    6 console.log(num2); //25.541
    5、强制转换为 - 布尔值
    boolen()
    1) 转换为false有:
    "" 0 false,undefined,null,NaN,转换为布尔值都会变成false
     
    a:“”引号中间没有空格
    1 var str1="";
    2 var b=Boolean(str1);
    3 console.log(b); //false

    b: 0

    1 var str2=0;
    2 var b=Boolean(str2);
    3 console.log(b); //false
    c: false
    1 var str3=false;
    2 var b=Boolean(str3);
    3 console.log(b); //false
    d: underfind
    1 var str4;
    2 var b=Boolean(str4);
    3 console.log(b); //false
    e: null
    1 var str5=null;
    2 var b=Boolean(str5);
    3 console.log(b); //false
    f:NaN
    1 var str6=NaN;
    2 var b=Boolean(str6);
    3 console.log(b); //false
    2) 除此之外转换都是:true
    1 var str="aaa";
    2 var b=Boolean(str);
    3 console.log(b); //str
     
    二:隐式转换

    • j类型不同,弱类型语言会自动将数据转换为对应的类型
    • 当数据类型不相同时,做数据的运算,就会自动将两端的数据转换为相同类型然后运算,这是隐式转换
    • 隐式转换遵从与 String() Number() Boolean()
    例:加法运算:都转换为字符串运算
    1 var a=6;
    2 var b="a";
    3 var c=true;
    4 console.log(a+b); //6a
    5 //这里将a隐式转换为字符串,并且相加首尾相连6 console.log(a+c); // 7
    例:减法运算:都转换为数值
    1 var a=6;
    2 var b="a";
    3 console.log(a‐b);
    4 //减法会隐式转换将a和b都转换为数值 NaN 6‐NaN

      

  • 相关阅读:
    backtrace、backtrace_symbols、backtrace_symbols_fd-support for application self-debugging
    基于linux与busybox的reboot命令流程分析
    Ubuntu Linux 查看、编辑、比较二进制文件
    SecureCRT中的vim出现1H特殊字符
    单例模式和静态方法
    linux ls命令按时间显示文件
    Shallow Heap & Retained Heap
    jedis连接池的参数配置
    jvm参数设置和性能调优
    并发和并行的区别
  • 原文地址:https://www.cnblogs.com/moon-lee/p/12556773.html
Copyright © 2020-2023  润新知