系统学习(javascript)_基础(数据类型之间的转换)

时间:2024-09-27 21:06:56

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


强制转换:

  利用js提供的函数parseInt(),parseFloat(),Number(),Boolean()进行数据转换,前两个分别是对数据进行解析转换,前者是整数,后者是浮点数。解析的原则是从前往后进行解析,尽其所能。若存在有能识别的数字就解析,如果第一位不是数字则返回NaN。Number则是对整体进行判断,是数字返回数字,否则返回NaN。Boolean()则是内容强制转换为布尔true或者false。

ParseInt():

  parseInt(123);//123

  parseInt(+123);//123

  parseInt(++123);//NaN

  parseInt(-123);//-123

  parseInt(--123);//NaN

  parseInt(“12.3元”);//12

  parseInt("abc");//NaN

  parseInt([1,2]);//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");//10

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

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

parseInt("010",   10); //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():

Number("123");//123

Number("+123");//123

Number("12.3");//12.3

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()则是传入的所有数据类型转换为字符串。

String()和toString()方法的区别

typeof String(null)//String

typeof String(undefined)//String

隐式类型转换:

  隐式类型转换和java中大不相同,在js中数据类型不严格,没有浮点型和整型。

  隐式类型转换指的是字符串和数值类型之间的转换,在进行字符串和数字之间进行减乘除取模运算或者进行比较运算时,自动把字符串转换为数字,转换数字的默认方法是调用Number()。进行加法运算则是将数字看成字符串进行拼接。

var x = "123";

var y = 121;

console.log(x+y);//"123121;

console.log(x-y);//2

console.log(x*y);//14883

console.log(x/y);//1.016528256198346

console.log(x%y);//2

console.log(x>y);//true

console.log(x==y);//false

console.log("123a">y);//false诡异

javascript只是一种弱类型的脚本语言,语法相对于java等高级编程语言来说不够严格,所以对于它的数据类型之间的转换很容易混淆。  

参考文章:https://www.cnblogs.com/liqiangchn/p/6915072.html