javascript 常见数据类型转换情形

能力有限,水平一般,偏差错误在所难免,例子也不可能那么全面,文章只是个人愚见,对错还需各位自行试验,与君共勉。

javascript一般可以认为有5种基本数据类型:number,boolean,sring,null,undefined;还有一种引用数据类型object。

顺便多嘴说一句,infinity -infinity NaN 都是number类型;

本文把js中常见的数据类型转换分为显示转换和隐式转换;其实它们相互关联,隐式转换也是调用显示转换的规则的。
 

一、显示转换

1. Number( )  ,parseInt( )  与 parseFloat( )

 

 Number():把对象的值转换为数字,参数为javascript对象; 如果对象的值无法转换为数字,那么 Number() 函数返回 NaN;

 parseInt():解析一个字符串并返回一个整数。有基模式,有两个参数:parseInt(string,radix),其中radix参数可选;

 parseFloat():解析一个字符串并返回一个浮点数。没有基模式,只有一个参数:parseFloat(string);

 parseFloat()方法与parseInt()方法的处理方式相似,从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字 符之前的字符串转换成数字。不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的, parseFloat()方法会把这个小数点之前的字符串转换成数字。这意味着字符串 "22.34.5 "将被解析成22.34。  

Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。

另外,parseInt([1])==1,这里面涉及到了隐式转换,因为parseInt()的参数需要时string,所以遇到数组[1]时,会先调用数组的toString()方法把它转换为字符串,然后再转换为数字;

关于parseInt()与Number()的差异,请看下图,如果还有不理解的,可以先参照下文隐式转换部分的内容: 

    

      

2. Boolean()

 Boolean(value):把参数转换为boolean类型,参数为一个任意类型的值;

 这个比较简单粗暴,在我的认知里,返回false的只有如下值:0,NaN,null,undefined,空字符串。

 

3. String()

 String(object):把对象的值转换为字符串,参数为一个javascript对象;

 最简单,把一切转换为字符串,String()和toString()的区别就是:String()能把null和undefined正确转换;而null和undefined却因为没有toString()而……看图吧:
            
上图为下图所用数组,对象,date和函数;
            

   

二、隐式转换

1. == 运算中的隐式转换

 

 回想一下javascript的数据类型,然后参看以下‘==’中的隐式转换规则:

           ---有布尔值时,先把布尔值转换为数字;

           ---字符串和数字比较时,把字符串转换为数字;

           ---null和undefined在==运算中,除了和自身比较返回true,以及null==undefined返回true,它们与任何其他类型均返回false;

           ---对象(含数组等)与对象比较时,看引用是否为同一个;

           ---非对象A与对象B比较时,先把对象B转换为字符串,再与A进行比较。

   简单粗暴地总结下就是:呃,就是……是时候展现真正的画图技术了:

  (特别注意:在==中,字符串和布尔值的比较也是通过数字类型这个中介,和之后介绍的转换要区分开;另外在隐式类型转换中,字符串转换为数字调用的是Number()方法)

       

  2. '+' 与 '-'、'*'、'/'、'<'、'>' 等;
   
主要分析字符串与数字的以上运算,其实就分两种情形:
   +:在+中,会把number自动转换为string类型;
   其他:在以上其他运算符运算中,会把string类型自动转换为number类型(应用Number()方法转换)

    

3.前后置自增‘++’与自减‘--’,以及‘+’与‘-’

 Number()的转换规则相差无几,前面已经说的比较详细了,下面直接上例子,例子主要针对于 string 类型的转换:

  

4.  语句中的隐式转换

      一般出现在条件语句中,如:if ( something ){········} ;则此时用Boolean()对something进行转换,true就执行;

      而如果是if ( value1== value2 ){........};则就要运用==中的运算进行判断,true就执行
    

才疏学浅,文笔粗陋,见谅,共勉。如果有新的想法,会补充。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值