目录
方法 三 通过parseInt(需要转换的字符串)/parseFloat(需要转换的字符串)
1、JavaScript的数据类型介绍
JavaScript的数据类型:
1、JavaScript中设计了5种简单数据类型:
- Number 数据类型
- String 字符串类型
- Boolean 布尔类型
- Undefined 未定义的
- Null 空值
- Object 和复杂数据类型
ES6新增的Symbol数据类型,Symbol在开发中很少遇到,一般在写类库、或保证对象键不重复,这里不做讨论
2、JavaScript中的特殊类型值:
0、NaN、空字符串""、false、undefined、null
这6个值在 Boolean转型函数中,结果均为false。由于程序控制语句 if 自动使用Boolean函数转换为布尔值,因此这6个值非常重要。
- 对于Number类型,特殊的值有 0、NaN;(Infinity转换结果与一般Number类型值转换结果一致)
- 对于String类型,特殊的值为空字符串 "",
- 对于Boolean类型 ,只有true、false两种,false为特殊值;
- 对于Undefined类型,只有一种类型,特殊值为undefined;
- 对于Null类型,只有一种类型,特殊值为null。
3、JavaScript 数据类型
在 JavaScript 中有 6 种不同的数据类型:
- string
- number
- boolean
- object
- function
- symbol
3 种对象类型:
- Object
- Date
- Array
2 个不包含任何值的数据类型:
- null
- undefined
转换为数值型
方法 一 number法则
通过Number(常量or变量)方式来转换
注意:
- 如果字符串中都是数值,那么就正常转换
- 如果字符串中没有数据(空字符串)""/" ",那么转换的结果为0
- 如果字符串中的数据不仅仅是数值,那么转换的结果是NaN
- 如果是布尔类型的true,那么转换的结果是1
- 如果是布尔类型的false,那么转换的结果是0
- 如果是空类型(null),那么转换的结果是0
- 如果是undefined(未定义)类型,那么转换的结果是NaN
代码
1、未定义类型转数值型:
// 如果是undefined(未定义)类型,那么转换的结果是NaN
let str = undefined;
let num = Number(str);
console.log(num); // NaN
console.log(typeof num); // number
2、布尔型转数值型
// 如果是布尔类型的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
3、 数值加字符串转换
// 如果字符串中的数据不仅仅是数值,那么转换的结果是NaN
let str = "13px";
let num = Number(str);
console.log(num); // NaN
console.log(typeof num); // number
4、空字符串类型
// 如果字符串中没有数据(空字符串)""/" ",那么转换的结果为0
let str = " ";
let num = Number(str);
console.log(num); // 0
console.log(typeof num); // number
5、都是数字类型
// 如果字符串中都是数值,那么就正常转换
let str = "111";
let num = Number(str);
console.log(num); // 111
console.log(typeof num); / number
方法 二 数学运算符号中的+号和-号来转换
注意:
虽然通过+/-都可以将其他类型转换为数值类型,但是-号会改变数值的正负性
+/-本质上就是调用了Number()函数
代码
1、+号
let str = "111";
let num = +str;
console.log(num); // 111
console.log(typeof num); // number
2、-号
// -号会改变数值的正负性
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
代码
1、partInt
// parseInt(需要转换的字符串)
let str = "13.04px";
let num = parseInt(str);
console.log(num); // 13
console.log(typeof num); // number
2、partFloat
// parseFloat(需要转换的字符串)
let str = "13.04px";
let num = parseFloat(str);
console.log(num); // 13.04
console.log(typeof num); // number
3、特殊数据类型
// parseInt/parseFloat都会将传入的数据当作字符串来处理 无论是true/false/undefined/null,最后都会返回NaN
let str = true;
let num = parseFloat(str);
console.log(num); // NaN
console.log(typeof num);
转换为字符串型
方法 一 toString()方法
调用被转换数据类型的toString()方法
该方法不会影响到原变量,它会将转换的结果返回
注意:
null和undefined这两个值没有toString()方法,
如果调用他们时用此方法,会报错
代码
var a=10;
a=a.toString();//调用方式
alert(typeof a);//查看a的数据类型
方法 二 String()函数
调用String()函数,并将被转换的数据作为参数传递给函数-使用String()函数做强制类型转换时,
对于Number和Boolean实际上就是调用的toString()方法但是对于null和undefined,就不会调用toString()方法
它会将null 直接转换为"null"
将undefined直接转换为"undefined"
代码
var a=10;
a=String(a);
alert(typeof a);
方法 三 利用字符串拼接
利用字符串拼接 隐式转换
代码
+ '';
alert(num + "我" );
转换为布尔型
方法 一 特殊类型转换为布尔值
""、0、undefined、null、false、NaN 转换为布尔值后都是false;
除此之外转换为布尔值后都是true。
代码
var a = ""; //false
var a = 0; //false
var a = undefined; //false
var a = null; //false
var a = NaN; //false
var a = " "; //true 空格不是空字符串
a = Boolean(a);
console.log(a);
方法 二 数组转换为布尔类型
数组转换为布尔值有一些需要注意的地方:
数组直接使用Boolean转换时,结果都是true;
代码
var arr = [1, 2, 3]; //true
var arr = []; //true
var b = Boolean(arr);
console.log(b);
console.log(![]); //false
但是数组在进行比较的时候,就不一定是这样了,例如:
console.log(![] == []); //true
在这里,它们是这样转换为布尔值比较的因为[]直接转换为布尔值的结果是true,所以![]转换为布尔值的结果是false。
而[]会先转换为字符串"",然后字符串""再转换为布尔值false。所以它们比较的结果是true。
因为[]直接转换为布尔值的结果是true,所以![]转换为布尔值的结果是false。而[]会先转换为字符串"",然后字符串""再转换为布尔值false。 所以它们比较的结果是true。
所以 ![] == “” 的结果也是true。