数据类型---数据类型转换、隐式类型转换

来源:互联网 发布:小马网络 编辑:程序博客网 时间:2024/06/10 19:45
数据类型的转换***
javascript 本身是一种弱类语言,
#c/c++/java 强类型语言
#javascript 弱类型语言
#生活 


特点:
1:声明变量,不用提前指定数据类型
  var i;
2:同一个变量,先后使用可以保存不同类型数据
  var i = 10;
  i = "abc";
  i = true;
  console.log(i);
3:javascript会根据需要,自动转换数据类型




数据类型转换二种
1:隐式类型转换
  不需要程序员干预,js自动完成类型转换
  算数运算自动转换.
  #booealn
   true --> 1
   false--> 0
  #+ 二种含义,如果运算符二侧数字  + 相加
               如果运算符二侧有一个是字符串
               +  拼接运算
               "abc"+"kkk"  //"abckkk" 


 #false--->0
 #null---->0              
2:显示类型转换[强制]
  程序员通过调用函数完成类型转换


  2.1:任意类型 --》字符串
  a:x.toString(); 
  b:String(x);-->比上面更通用


  #js有一个函数 typeof(x) 返回变量类型
  #x.toString() 
  #如果数据是 null 报错
  #undefiend       报错


  #String() 以上几种类型转换成功

-------------------------------------------------

1. ***数据类型转换:
  强制转换:
    转string: var str=x.toString();
              //x不能是null和undefined
              var str=String(x); 万能
              //相当于隐式转换
    转number: 
      1. 任意类型 to number: 
        var num=Number(x);
        //相当于隐式转换
        //如果x是纯数字组成或可被隐式转为数字,则返回一个number的数值
        //如果x不是纯数字组成或不可被隐式转为数字,则返回NaN。
        什么是NaN:Not a number 无效的数字
        typeof(NaN): number
      2. string to number:
        var num=parseInt(str);
        执行原理:从str的开始位置,依次读取每个字符
                  跳过开头的空白字符
                  仅读取数字字符
                  碰到第一个不是数字的字符,就退出
                  不认识小数点
        比如: var width="12px";
              width=parseFloat(width);//12
              width=width+5;//17
              width=width+"px";//17px;
        
        parseInt vs Number:
        Number只能转纯数字的字符串,但却可转bool类型
        比如: Number("12px") -> NaN
              Number(true) -> 1
              Number("12.5") -> 12.5
        parseInt可启动去除数字后的非数字字符
                但不能转换boolean类型
        比如: parseInt("12px") -> 12
              parseInt(true) -> NaN
              parseInt("12.5") -> 12


        parseFloat(str): 用法和parseInt完全相同
                         认识第一个小数点
              parseFloat("12.5px") -> 12.5
              parseFloat("12.5.5") -> 12.5
              parseFloat("12.0") -> 12


        总结: 何时使用
          Number(x): 一般在隐式转换时,自动调用
          parseInt/Float: 将字符串转为数字时,最好用parseXXX。
   parseInt: 确定需要去掉小数部分时才用
   parseFloat: 如果没有明确要求去掉小数部分,最好用parseFloat


    转bool : Boolean(x);//相当于隐式转换
      ***只有x是"",0,NaN,null,undefined,false 时,才转为false
         其余全都转为true


    隐式转换: 




  2.2 任意类型转换成->数字
  Number();     强制转换任意类型-》数值
  parseInt();   强制转换字符串类型->数值[整值]
  parseFloat(); .....                   [小数.浮点]


  Number();    转换严格
  Number("");-->0
  Number(true);-->1
  Number(false);-->0
  Number(null);--->0
  Number("123");--->123
  Number("12ab");-->NaN {not a number}不是一个数字


  #parseInt
  #字符串转数字
  #从左向右依次分析每个字符,如果碰到第一个
   非数字字符退出.
   不识别小数点,小数点后内容省略
   "123.90abc"
  ->[123]


  #parseFloat
  #字符串转数字
  #功能同上,识点小数点保留小数点后数值




  exam:
  1:创建变量 保存值 true
  2:转换整型数
  3:创建变量 保存值 "123kk"
  4:转换整型数
  5:创建变量 保存值 "99.99#"
  6:转换浮点数




  小结:
  Number 转换范围广{null/true/false/"1a3"}
  parseInt   将字符串转数值
  parseFloat


  面试题:
  Number()  vs parseInt();


  1:以上二个函数功能相似,都是将其它类型转换
    数值
  2:不同点
    Number() 转换范围 
    parseInt() 字符串 转换整型数值 
    "99px"--->99




   2.3:任意类型--->布尔 boolean
   Boolean();0 null undefined "" NaN
   以上5种转换false其它都会转换 true




小结:
强制类型转换
1:任意类型转字符串
  d.toString();[null,undefiend 报错]
  String()
2:任意类型转数值
  Number();     范围广
  parseInt();   字符串转数值
  parseFloat();
3:任意类型转布尔
  Boolean();     0 "" undefined null NaN







0 0
原创粉丝点击