目录
任务描述
相关知识
字符串转整数
字符串转小数
数字转字符串
布尔型与其他类型的相互转换
隐式转换
编程要求
任务描述
数据类型转换是开发过程中最常碰到的问题之一。
本关任务:函数mainJs()
有三个字符串类型的参数a
、b
和c
,你需要分别把他们转换为整数,整数和小数。
相关知识
字符串转整数
如果你想把一个字符串转换成整数,有两种方式。
- 使用
parseInt()
方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN ;否则,转换到字符串中第一个不是数字的字符为止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号0x
不会让转换停止。parseInt()
还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: -
parseInt("12"); parseInt("12.2"); parseInt("C",16); // 16表示转换为16进制的值 parseInt("12a2"); parseInt("0XC"); // 以上均返回数字12 parseInt("a12"); // 失败
- 使用
Number()
进行强制类型转换; 使用Number()
转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的parseInt()
方法对比可知,Number()
实现的是更加严格的字符串转换为数字操作。因为对于12a3
这种含有字母等非数字字符的字符串,Number()
会报错。下面是一些例子。Number("12"); // 返回12 Number("12a2"); //返回 NaN Number(""); // 返回0
字符串转小数
与整数相同,字符串转小数也有两种方式parseFloat()
和Number()
。
parseFloat()
方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。
parseFloat("12"); // 返回12
parseFloat("12.2a"); // 返回12.2
parseFloat("12.2.2"); // 返回12.2,第二个小数点会让转换停止
parseFloat(null); // 返回0
数字转字符串
toString()
实现一般的数字转字符串,String()
则是强制类型转换。
toString()
括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12
调用toString(16)
得到的结果就是 C ,即12的16进制表示方式。
String()
可以转换 null 和 undefined,而toString()
不可以。
var myNum = 15;
console.log(myNum.toString()); // 输出"15"
console.log(myNum.toString(16)); // 输出"F"
console.log(String(myNum)); // 输出"15"
布尔型与其他类型的相互转换
布尔型的值只有两个 true 和 false。转换规则:
- 布尔型转为字符串直接就是字符串 true 或者 false ;
- 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0;
- 数字 0 、 null、 undefined、空字符串转换为布尔型的 false,其他所有都是转换为 true。
下面例子中的Boolean()
方法实现其他的类型转布尔型。
var myBool = ture;
myBool.toString(); // 返回"true"
Number(true); // 返回1
Boolean("js"); // 返回true
Boolean(""); // 返回false
注意,上面讲的空字符串是""
,而不是空格字符串" "
,这两个不同,后者双引号之间有一个英文字符的大小的空位,他们转为布尔型的结果不同:
Boolean(""); // 返回false
Boolean(" "); // 返回true
隐式转换
JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则:
+
运算的两个操作数是数字和字符串,数字会被转换为字符串;+
运算的两个操作数是数字和布尔型,布尔型会被转换为数字;+
运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串;- 减、乘、除、取余运算会把其他类型转换为数字;
- if 括号中单独的一个变量会被转换为布尔型。
编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
-
完成函数
mainJs()
; -
把函数三个参数(从左到右)依次转换为整数,整数和小数;
-
第一个参数既有可能是12这种纯整数的字符串形式,也有可能是
12a3
这种含有非数字字符的字符串; -
第二个参数是16进制数字的字符串形式,如
af2
; -
第三个参数是纯小数的字符串形式,如12.2;
function mainJs(args1,args2,args3) {//请在此处编写代码/********** Begin **********/var a=parseInt(args1);var b=parseInt(args2,16);var c=parseFloat(args3);/********** End **********/return a+b+c;
}