所有从页面获取的数据都是字符串,无法进行数值计算,需要转换为具体的数据类型运算操作,数据类型转换分为’数据类型强制转换’、‘数据类型隐式转换’。
数据类型的强制转换就是通过 js 提供的函数进行数据转换。
1、其他类型转 Number 类型
(1)Number ( 参数 )
参数
······参数像是一个占位符。当方法被调用时,传递值给参数,这个值被称为实参或变量。
······参数列表是指方法的参数类型、顺序、和参数的个数。
······参数是可选的,方法可以不包括任何参数。
·
形式参数 在方法被调用的时候用于接收外界输入的数据
实参 调用时实际传给方法的数据。
<1>作用:将任何类型转换为数字,返回一个新数值,不会改变原参数
调用Number转换数字时,Number()的首字母要大写
var str1 = '11';
var n = Number(str1); //调用Number转换数字时,Number()的首字母要大写
console.log(n); //返回一个新数值,类型为Number类型
console.log(typeof n);
console.log(str1); //原参数类型不变,仍为String类型
console.log(typeof str1);
<2>转换规则:
① 如果字符串全是数字,则正常转为数字,返回数字;
② 如果有不是数字的,则转不成功,为NaN,返回NaN;
③ true转为1, false转为0;
④ null转为0;
⑤ undefined转为NaN。
//2、字符串中有不是数字的不能转,为NaN,但属于数字类型
var str3 = '大王8';
var n2 = Number(str3);
console.log(n2);
console.log(typeof n2);
//3、true转为1,false转为0
var n3 = Number(true);
console.log(n3);
var n4 = Number(false);
console.log(n4);
//4、null转为0
var n5 = Number(null);
console.log(n5);
//5、undefined转为 NaN
var n6 = Number(undefined);
console.log(n6);
注意 Number 方法将字符串转换成 number 类型时,只能转换纯数字字符串和空字符串,其他的都是 NaN。 但是有些时候,需要对字符串做操作。
(2) parseInt 和 parseFloat
<1>语法
······有些情况下,我们需要对字符串进行一些运算操作,例如‘12px’需要在当前像素的基础上自加,针对于 12px 这种情况,可以通过parseInt 与 parseFloat 转换,都是转换为number 类型,parseInt 是转换成整型。parseFloat 转换成浮点型,即可以保留小数。
parseInt(参数):将参数转为Number,取整,舍弃小数部分;
parseFloat(参数):将参数转为Number,保留小数。
var str1 = '3.14159265785'
var p1 = parseInt(str1); //转换成数字、整数
console.log(p1);
console.log(typeof p1);
var p2 = parseFloat(str1); //转换成数字、小数
console.log(p2);
console.log(typeof p2);
<2>转换规则
- 从前往后一位一位地看,如果是数字,则提出来,如果不是数字,则到此为止,只转换前面能识别的,后面的都不要了。
······parseInt 和 parseFloat 在转换时是对数据进行解析转换,前者是整数,后者是浮点数。他们解析的原则是从前往后进行解析,尽其所能。若存在有能识别的数字就解析,遇到不能识别的就结束转换,如果第一位就不是数字则返回 NaN。
//取整时遇到不是数字的
var str2 = '12a56.8';
var p3 = parseInt(str2);
console.log(p3);
console.log(typeof p3);
var str3 = 'm4586';
var p4 = parseInt(str3);
console.log(p4);
//保留小数时遇到不是数字的
var str4 = '12.58md56';
var p5 = parseFloat(str4);
console.log(p5);
var str5 = '1a5.586';
var p6 = parseFloat(str5);
console.log(p6);
var str6 = 'j5.96';
var p7 = parseFloat(str6);
console.log(p7);
<3>区别
- parseFloat能识别小数点,仅限于从前往后的第一个小数点,而parseInt不识别;
- parseInt拥有第二个参数,可以设置代码以多少进制进行转换,而parseFloat没有第二个参数。
······语法:parseInt(string,radix)
······parseInt 以进制进行转换时,建议任何时候加上第二个参数 10,即以 10 进制转换
console.log(parseFloat('12.3.4万'));