JavaScript中的数据类型转换

来源:互联网 发布:淘宝上好看的女装店 编辑:程序博客网 时间:2024/06/10 11:54

  数据类型转换

  数值类型的转换

isNaN()函数

JS 提供了 isNaN()函数,用来判断这个值到底是不是 NaNisNaN()函数在接收到一个值之后,会尝试将这个值转换为数值

<script type="text/javascript">

document.write("a"*10);

</script>

 

<script type="text/javascript">

document.write(isNaN("a"*10)); //true

</script>

 

alert(isNaN(25)); //false25是一个数值

alert(isNaN('25')); //false'25'是一个字符串数值,可以转成数值

alert(isNaN('Lee')); //true'Lee'不能转换为数值

alert(isNaN(true)); //false true 可以转成成 1

非数值转换为数值

3 个函数可以把非数值转换为数值:Number()parseInt()parseFloat()Number()函数是转型函数,可以用于任何数据类型,而另外两个则专门用于把字符串转成数值。

alert(Number(true)); //1Boolean类型的 truefalse分别转换成 10

alert(Number(25)); //25,数值型直接返回

alert(Number(null)); //0,空对象返回 0

alert(Number(undefined)); //NaNundefined返回 NaN

如果是字符串,应该遵循一下规则:

1.只包含数值的字符串,会直接转成成十进制数值,如果包含前导 0,即自动去掉。

alert(Number('456')); //456

alert(Number('070')); //70

2.只包含浮点数值的字符串,会直接转成浮点数值,如果包含前导和后导 0,即自动去掉。

alert(Number('08.90')); //8.9

3.如果字符串是空,那么直接转成成 0

alert(Number('')); //0

4.如果不是以上三种字符串类型,则返回 NaN

alert(Number ('ge123'));

alert(Number ('123 ge '));

 

由于 Number()函数在转换字符串时比较复杂且不够合理,因此在处理整数的时候更常用的是parseInt()

alert(parsetInt('456zhen')); //456,会返回整数部分

alert(parsetInt('zhen456zhen')); //NaN,如果第一个不是数值,就返回NaN

alert(parseInt('12zhen56zhen')); //12,从第一数值开始取,到最后一个连续数值结束

alert(parseInt('56.12')); //56,小数点不是数值,会被去掉

alert(parseInt('')); //NaN,空返回 NaN

parseInt()除了能够识别十进制数值,也可以识别八进制和十六进制。

alert(parseInt('0xA')); //10,十六进制

alert(parseInt('070')); //56,八进制

alert(parseInt('0xAzhen')); //10,十六进制,zhen被自动过滤掉

JavaScript parseInt()提供了第二个参数,用于解决各种进制的转换。

alert(parseInt('0xAF')); //175,十六进制

alert(parseInt('AF',16)); //175,第二参数指定十六进制,可以去掉 0x 前导

alert(parseInt('AF')); //NaN,理所当然

alert(parseInt('101010101',2)); //314,二进制转换

alert(parseInt('70',8)) //56,八进制转换

parseFloat()是用于浮点数值转换的,和 parseInt()一样,从第一位解析到非浮点数值位置。

alert(parseFloat('123zhen')); //123,去掉不是别的部分

alert(parseFloat('0xA')); //0,不认十六进制

alert(parseFloat('123.4.5')); //123.4,只认一个小数点

alert(parseFloat('0123.400')); //123.4,去掉前后导

alert(parseFloat('1.234e7')); //12340000,把科学技术法转成普通数值

  字符串类型的转换

toString()方法可以把值转换成字符串。

var box = 11;

var box = true;

alert(box.toString());

alert(typeof box.toString());

toString()方法一般是不需要传参的,但在数值转成字符串的时候,可以传递进制参数。

var box = 10;

alert(box.toString()); //10,默认输出

alert(box.toString(2)); //1010,二进制输出

alert(box.toString(8)); //12,八进制输出

alert(box.toString(10)); //10,十进制输出

alert(box.toString(16)); //a,十六进制输出

 

随机改变页面的背景颜色:

</html>

<script type="text/javascript">

var a=Math.ceil(Math.random()*15).toString(16);

var b=Math.ceil(Math.random()*15).toString(16);

var c=Math.ceil(Math.random()*15).toString(16);

var d=Math.ceil(Math.random()*15).toString(16);

var e=Math.ceil(Math.random()*15).toString(16);

var f=Math.ceil(Math.random()*15).toString(16);

var color="#"+a+b+c+d+e+f;

document.body.bgColor=color;

</script>

 

如果在转型之前不知道变量是否是 null 或者 undefined 的情况下,我们还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。

var box = null;

alert(String(box));

PS:如果值有 toString()方法,则调用该方法并返回相应的结果;如果是null 或者undefined,则返回"null"或者"undeinfed"

 

把数字转换为字符串的方法:

a) 一个数字用在一个字符串连接表达式中,数字就会先自动转换为字符串

var  s="年龄"+20;

在数字后面 加上一个空的字符串,也可以转换  var  s=20+’ ’;

b) 使用String()函数进行转换:String(数字);

c) 把数字转换为字符串的另一种方法是使用toString()函数。数字.toString()该函数有一个可选的参数表示要转换的进制,例如:

i. var n=17;  

ii. binary_string=n.toString(2);   hex_string="0x"+n.toString(16);

d) 数字.toFixed(小数的位数):该方法可以将小数转换为指定位数的小数的字符串,进行四舍五入,不足补0。   如,n.toFixed(2);  n=123.456;

var s=2342.12312.toFixed(2);

e) 数字.toPrecision(数字的位数) 其中,包括整数位数、小数位数,而且能够四舍五入。例如:

var s=2423.345.toPrecision(6);

alert(s);

 

2.4.3  布尔类型的转换

虽然 Boolean 类型的字面量只有true false 两种,但Javascript 中所有类型的值都有与这两个Boolean 值等价的值。

a) 如果布尔值用在数字环境中,true就转换为数字1false就转换为数字0

b) 如果布尔值用在字符串环境中,true就转换为字符串“true,false就转换为字符串“false

c) 如果数字用在一个本该布尔值的地址,数字0NaN就会转换为false,否则就会转为true

if(1){

alert("hello");

}

d) 空字符串被转换为false 否则就转换为 true

e) 空值或未定义的值也会转换为false,而任何非空对象、数组或函数都转换为true

f) Boolean()可以将括号中的内容转换为布尔值

var hello = 'Hello World!';

var hello2 = Boolean(hello);

alert(typeof hello2);

上面是一种显示转换,属于强制性转换。而实际应用中,还有一种隐式转换。比如,在if 条件语句里面的条件判断,就存在隐式转换。

var hello = 'Hello World!';

if (hello) {

alert('如果条件为 true,就执行我这条!');

} else {

alert('如果条件为 false,就执行我这条!');

}

以下是其他类型转换成 Boolean


原创粉丝点击