数据类型
数据类型指的就是字面量的类型 在js中一共有六种数据类型
String 字符串
Number 数值
Boolean 布尔值
Null 空值
Undefined 未定义
Object 对象
其中String、Number、Boolean、Null、Undefined属于基本数据类型
而Object属于引用数据类型
Null(空值)类型的值只有一个,就是null null这个值专门用来表示一个为空的对象
使用typeof检查一个null值时,会返回object如果使用js进行浮点运算,可能得到一个不精确的结果 所以千万不要使用js进行对精确度要求比较高的运算
Undefined(未定义)类型的值只有一个,就是undefined 当声明一个变量,但是并不给变量赋值时,它的值就是undefined
数据类型转换
数据类型转换指将一个数据类型强制转换为其他的数据类型
类型转换主要指,将其他数据类型转换为:String Number Boolean
1、转换为String
方式一:
- 调用被转换数据类型的toString()方法
- 该方法不会影响原变量,它会将转换的结果返回
但是注意:null和undefined这两个值没有toString()方法,如果调用他们的方法会报错。
方式二:
- 调用String()函数,并将被转换的数据作为参数传递给函数
- 使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法。但是对于null和undefined就不会调用toString()方法,它会将null直接转换为“null”;将undefined直接转换为“undefined”
2、转换为Number
方式一:
使用Number()函数,使用方法同toString()函数 字符串转数字
1、字符串转数字
- 如果是纯数字的字符串,直接转换为数字
- 如果字符串中有非数字的内容 则转换为NaN
- 如果字符串是一个空串或者全是空格的字符串,则转为0
2、布尔转数字
- true转成1
- false转成0
3、null转数字
- 结果为0
4、undefined转数字
- 结果为NaN
方式二:
这种方式专门用来对付字符串
parseInt() 把一个字符串转换为一个整数
parseFloat()把一个字符串转换为一个浮点数
- parseInt()可以将一个字符串中的有效的整数内容取出来,然后转换为Number,从左往右读,读到非整数就停止:
a = "18px";
a = parseInt(a);
console.log(typeof a);
console.log(a);
结果为:
如果将a的值换一下:
a = "12.8px";
a = parseInt(a);
console.log(typeof a);
console.log(a);
就会变成这样:
- parseFloat()作用和parseInt()类似,不同的是他可以获得有效的小数
如果对非String使用parseInt()或parseFloat(),它会先将其转换为String,然后再操作
a = 18.23;
a = parseInt(a);
console.log(typeof a);
console.log(a);
3、其它进制的数字
在js中 如果需要表示16进制的数字,则需要以0x开头
如果需要表示8进制的数字,则需要以0开头 如果要表示2进制的数字,则需要以0b开头,但不是所有浏览器都支持
a = 0x23;//16进制数
a = 070;//8进制数
a = 0b10;//2进制数
a = "070";//这种字符串有些浏览器会当成8进制解析,有些会当成10进制解析
a = parseInt(a, 10);//可以在perseInt()中传递一个参数,来指定数字的进制
console.log(typeof a);
console.log(a);
4、转换为Boolean
调用Boolean()函数来将被转换对象转换为布尔值
- 数字转布尔,除了0和NaN,其余都是true
- 字符串转布尔,除了空串,其余都是true
- null和undefined都会转换为false
- 对象也会转换为true