在JavaScript中如果想将以上的四种基本数据类型转换为数值类型,常用的方法有三种
第一种:通过Number(常量or变量);方式来转换
- 如果字符串中都是数值,那么就正常转换
- 如果字符串中没有数据(空字符串)""/" ",那么转换的结果为0
- 如果字符串中的数据不仅仅是数值,那么转换的结果是NaN
- 如果是布尔类型的true,那么转换的结果是1
- 如果是布尔类型的false,那么转换的结果是0
- 如果是空类型(null),那么转换的结果是0
- 如果是undefined(未定义)类型,那么转换的结果是NaN
// 如果字符串中都是数值,那么就正常转换
let str = "111";
let num = Number(str);
console.log(num); // 111
console.log(typeof num); / number
// 如果字符串中没有数据(空字符串)""/" ",那么转换的结果为0
let str = " ";
let num = Number(str);
console.log(num); // 0
console.log(typeof num); // number
// 如果字符串中的数据不仅仅是数值,那么转换的结果是NaN
let str = "13px";
let num = Number(str);
console.log(num); // NaN
console.log(typeof num); // number
// 如果是布尔类型的true,那么转换的结果是1
// 如果是布尔类型的false,那么转换的结果是0
// 如果是空类型(null),那么转换的结果是0
let str = true;
let str1 = false;
let str2 = null;
let num = Number(str);
let num1 = Number(str1);
let num2 = Number(str2);
console.log(num, num1, num2); // 1 0 0
console.log(typeof num); // number
console.log(typeof num1); // number
console.log(typeof num2); // number
// 如果是undefined(未定义)类型,那么转换的结果是NaN
let str = undefined;
let num = Number(str);
console.log(num); // NaN
console.log(typeof num); // number
第二种:还可以通过数学运算符号中的+号和-号来转换
注意点:虽然通过+/-都可以将其他类型转换为数值类型,但是-号会改变数值的正负性
+/-本质上就是调用了Number()函数
let str = "111";
let num = +str;
console.log(num); // 111
console.log(typeof num); // number
// -号会改变数值的正负性
let str = "111";
let num = -str;
console.log(num); // -111
console.log(typeof num); // number
第三种:还可以通过parseInt(需要转换的字符串)/parseFloat(需要转换的字符串)
注意点:parseInt/parseFloat都会从左至右的提取数值,一旦遇到非数值就会立即停止 停止的时候如果还没有提取到数值,就会返回NaN
parseInt/parseFloat都会将传入的数据当作字符串来处理 无论是true/false/undefined/null,最后都会返回NaN
// parseInt(需要转换的字符串)
let str = "13.04px";
let num = parseInt(str);
console.log(num); // 13
console.log(typeof num); // number
// parseFloat(需要转换的字符串)
let str = "13.04px";
let num = parseFloat(str);
console.log(num); // 13.04
console.log(typeof num); // number
// parseInt/parseFloat都会将传入的数据当作字符串来处理 无论是true/false/undefined/null,最后都会返回NaN
let str = true;
let num = parseFloat(str);
console.log(num); // NaN
console.log(typeof num);
网友评论