js数据类型转换

 js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用js弱变量类型转换)

强制转换:

        利用js提供的函数parseInt() ,parseFloat() ,Number(),Boolean()进行数据转换,顾名思义,前两个分别是对数据进行解析转换,前者是整数,后者是浮点数。他们解析的原则是从前往后进行解析,尽其所能。若存在有能识别的数字就解析,如果第一位就不是数字则返回NaN.Number则是对整体进行判断,是数字返回数字,否则NaN.Boolean()则是对是否存在和真假进行判断进行判断。

ParseInt()

        parseInt("123");//123

        parseInt("+123");//123

        parseInt("-123");//123

        parseInt("12.3")//12

        parseInt("abc");//NaN

         parseInt([1,2])//1

         parseInt([1,2,4])//1

          parseInt("  ");//NaN

该方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,所以要解析十六进制的值,对于含有前导的数则直接进行解析需如下调用:

        parseInt("AA",16);//170

        parseInt("10",2);//2

        parseInt("10",8);//8

        parseInt("10",10);//10

        //含有前导

        parseInt("0xAA")//170        

        //如果二进制数包含前导0,那么最好采用基数2,不然默认以十进制解析

        parseInt("010");   //returns   10 

        parseInt("010",2);//2         parseInt("010",   8);   //returns   8          parseInt("010",   10);   //returns   10 

        parseInt(null)//NaN

ParseFloat():

        parseFloat("123");//123

        parseFloat("-123");//123

         parseFloat("+123");//123

        parseFloat("12.34");//12.34

         parseFloat("12.35")//12.35

        parseFloat("12.23.122");//12.23

        parseFloat("av");//NaN

        parseFloat("0xAA");//0

        parseFloat("0110");//110

        parseFloat([1]);//1

        parseFloat([2,3]);//2

        parseFloat([]);//NaN

        parseFloat(null)//NaN

   

Number():

        alert(123);//123

        Number("123");//123

        Number("+123");//123

        Number("12.3");//12.3

        alert(12.3);//false

        Number(true);//1

        Number("12.3.4");//NaN

        Number(" ");//0

        Number("abc");//NaN

        Number([]);//0

        Number([1]);//1

        Number([1,2]);//NaN

        Number(new Object());//NaN

        Number(null);//0

Boolean():他不会对引号里面的数字进行自动进行转换。

        Boolean(1) ;//true

        Boolean(0);//false

        Boolean("1");//true

        Boolean("0");//true

        Boolean("abc");//true

        Boolean('');//false

        Boolean('   ');//true

        Boolean([])//true

        Boolean([1])//true

        Boolean(null)//false

String()则是传入的所有数据类型转换为字符串。

//toString()方法的区别是

typeof String(null)//String

typeof String(undefined)//String

 隐式类型转换:

    隐式类型转换和java中大不相同,在js中数据类型不严格,没有浮点和整型,这里的隐式类型转换指的是字符串和数值类型之间的转换,在进行字符串和数字之间进行减乘除取模运算或者进行比较运算时,他会自动把字符串转换为数字。转换数字的默认方法是调用Number(),进行加法运算则是将数字看成字符串进行拼接. var x = "123";

var y = 121;

alert(x+y);//"123121;

alert(x-y);//2

alert(x*y);//14883

alert(x/y);//1.016528256198346

alert(x%y);//2

alert(x>y);//true

alert(x==y);//false

alert("123a">y);//false诡异

posted on 2018-05-23 11:58  gisery  阅读(259)  评论(0编辑  收藏  举报