JavaScript之数据类型转换

2019-08-14 10:33:15来源:博客园 阅读 ()

写在前面:JavaScript中有多种数据类型,在实际工作中,不管是有意还是无意的,我们总能碰到不一样的数据类型值之间进行运算,或者我想从用户输入获得一个数字时,而用户却输入了一个字符串,这种时候就需要用到今天介绍的东西了——数据类型转换。JS中的数据类型转换主要分为两大类:显式类型转换,隐式类型转换。

 

一     显示类型转换

         1、Number()

              接受一个参数,并把它转换成数字。

              如果参数包含数字和小数点以外的其他字符,则转换失败,返回NaN。下面是一些特殊值转换为数字的结果:

1 Number(null);//0
2 Number(undefined);//NaN
3 Number(true);//1
4 Number(false);//0
5 Number("");//0

         2、parseInt()

              接受两个参数,第一个参数会被转换成十进制整数,第二个参数是一个数字,规定第一个参数的进制,它是可选的,默认是10。

              转换规则:首先判断第一个参数的数据类型,如果不是字符串或数字类型,则转换失败,直接返回NaN;若是数字,则原样返回;若是字符串,则从第一个非空白字符开始检测,直到遇到第一个非数字字符为止,然后返回前面的部分。如果正负号是第一个非空字符,那么可以识别正负号。但不能识别小数点。

 1 parseInt("123");//123
 2 parseInt("-123");//-123
 3 parseInt(123.123);//123
 4 parseInt("    123");//123
 5 parseInt("123abc");//123
 6 parseInt("abc123");//NaN
 7 parseInt(true);//NaN
 8 parseInt(undefined);//NaN
 9 parseInt(unll);//NaN
10 parseInt("");//NaN
11 parseInt(110,2);//6
12 parseInt(110,16);//272

         3、parseFloat()

              接受一个参数,并把它转换成小数。如果正负号是第一个非空字符,那么可以识别正负号。和parseInt唯一不同的是,它可以识别第一次出现的小数点。

1 parseFloat("123.123");//123.123
2 parseFloat("123.1.2.3");//123.1
3 parseFloat("123.123abc");//123.123

         4、toString()

              用需要被转换成字符串的值调用toString()方法,格式:test.toString(),注意:数字不能直接调用,需要把数字赋值给变量调用。toString()方法的返回值都是字符串类型。

              在转换数字时,可以接受一个数字类型作为参数,参数规定了转换后结果的进制。其他时候传参无效。

1 var num = 10;
2 var a = num.toString();//"10"
3 var b = num.toString(2);//"1010"
4 var c = num.toString(8);//"12"
5 var d = num.toString(16);//"a"

         5、String()

              接受一个参数,将它转换成字符串。任何东西传进去都能的到字符串类型的返回值。

1 String(123);//"123"
2 String(123.123);//"123.123"
3 String(undefined);//"undefined"
4 String(null);//"null"
5 String(true);//"true"

         6、Boolean()

              除undefined、null、0、NaN、“”(空串)、false转换成false外,其他任何东西都被转成true。

1 Boolean(undefined);//false
2 Boolean(null);//false
3 Boolean(0);//false
4 Boolean(NaN);//false
5 Boolean("");//false
6 Boolean(false);//false

 

二 隐式类型转换

  1、isNaN()

    接受一个参数,判断参数是否是数字,是则返回false,否则返回ture。

    会触发隐式类型转换,先调用Number()把参数转换成数字类型。

1 isNaN(123);//false
2 isNaN("123");//false
3 isNaN("");//false
4 isNaN("abc");true

       2、++/--(自增自减)和+/-(正负)

                   会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

1 var num = "123";
2 num ++;//123
3 console.log(num);//124

       3、+(数字和字符串相加时)

                   会触发隐式类型转换,先调用String()把操作数转换成字符串类型。

1 var num = 12;
2 console.log("I'm " + num + "years old.");//"I'm 12 years old"
3 console.log(num + "12");//"1212"

       4、-、*、/、%

    会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

1 var num = 12;
2 console.log(num - 1);//11
3 console.log(num * 1);//12
4 console.log(num / 1);//12
5 console.log(num % 1);//0

       5、&&、||、!

    会触发隐式类型转换,调用Boolean()把每个操作数转换成布尔类型。

1 123 && "abc";//"abc"
2 0 && "abc";//0
3 123 || "abc";//123
4 0 || undefined;//undefined
5 !0;//true
6 !1;//false

  关于逻辑运算的返回值:与运算会返回第一个找到的能被Boolean()转换成false的操作数,否则返回最后一个操作数。或运算会返回第一个能被Boolean()转换成true的操作数,否则返回最后一个操作数。非运算将返回被Boolean()转换成布尔值后再取反的值。即非运算返回的不再是操作数的值,而是布尔值。

  6、>、<、<=、>=、==、!=(数字和字符串比较时)

    会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

1 123 > "122";//true
2 123 < "124";//true
3 123 >= "123";//true
4 123 <= "123";//true
5 123 == "123";//true
6 123 != "123";//false

 

最后有两个特别的:undefined == null 返回true;NaN == NaN 返回false。另外在做加法(+)运算时字符串优先,在做其他数学计算时,数字优先。


原文链接:https://www.cnblogs.com/ruhaoren/p/11338883.html
如有疑问请与原作者联系

标签:Q数据字符串方法工作变量

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:掷骰子

下一篇:数组解构赋值,方法