JS数据类型
一、基本数据类型(简单数据类型)
1. number 数值类型
整数
(1)十进制表示 var a = 100;
(2)八进制表示
以0为前缀 var b = 021; //结果为十进制的 17
(3)十六进制表示
以0x为前缀 var c = 0x35;//结果为十进制的 53
使用 : 整数可以采用不同进制表示,在控制台输出时一律会按照十进制输出
小数
(1)小数点表示 var m = 1.2345;
(2)科学计数法
例 : 1.5e3
e表示10为底,e后面的数值表示10的次方数
1.5e3 等价于 1.5 * 10(3)
2. string 字符串类型
字符串 : 由一个或多个字符组成,使用""或''表示,每一位字符都有对应的Unicode编码
var s = "100";
var s1 = "张三";
3. boolean 布尔类型
只有真和假两个值,布尔值与number值可以互相转换。true 为 1,false 为 0
var isSave = true;
var isChecked = false;
4. undefined
特殊值,变量声明未赋值时显示undefined
var a;
console.log(a);//undefined
5. null 空类型
解除对象引用时使用null,表示对象为空
二、引用数据类型
主要指对象,函数等
三、检测数据类型
typeof 变量或表达式
typeof (变量或表达式)
var n = "asda"; console.log(typeof n);//string console.log(typeof(n));//string
四、数据类型转换
不同类型的数据参与运算时,需要转换类型
1.强制类型转换
(1)转换字符串类型
方法 : toString()
返回转换后的字符串
var a = 100; a = a.toString(); //"100" var b = true; b = b.toString(); //"true" console.log(a1,typeof a1,b1,typeof b1)
(2)转换number类型
Number(param)
参数为要进行数据类型转换的变量或值,返回转换后的结果:
如果转换成功,返回number值
如果转换失败,返回NaN,(Not a Number),只要数据中存在非number字符,一律转换失败,返回 NaN
parseInt(param)
参数为要解析的数据
作用 : 从数据中解析整数值
过程 :
1. 如果参数为非字符串类型,会自动转成字符串
2. 从左向右依次对每一位字符转number,转换失败则停止向后解析,返回结果
parseFloat(param)
作用 : 提取number值,包含整数和小数部分
/*整体转number,使用Number()*/ var s1 = '123'; var s2 = '101a'; var s3 = true; var s4 = 'true'; var s5 = null; var s6; console.log(Number(s1),s1) //123 '123' console.log(Number(s2),s2) //NaN '101a' console.log(Number(s3),s3) //1 true console.log(Number(s4),s4) //NaN 'true' console.log(Number(s5),s5) //0 null console.log(Number(s6),s6) //NaN undefined
/* 提取字符串中的number部分:会将非字符串的数据自动转换成字符串 parseInt(n) parseFloat(n) */ console.log(parseInt(35.5)) //35 console.log(parseInt("35.5")) //35 console.log(parseFloat('35.5.6.6')) //35.5 console.log(parseFloat('a35.5')) //NaN console.log(parseFloat('101a')) //101
(3)转Boolean类型
/*除‘零’值以外,其他数据都为真,只有‘零’值为假*/ console.log(Boolean(100)) //true console.log(Boolean('100')) //true /*以下为‘零’值*/ console.log(Boolean('0')) //true console.log(Boolean(0.0)) //false console.log(Boolean('')) //false console.log(Boolean(null)) //false console.log(Boolean(undefined)) //false console.log(Boolean(NaN)) //false
2.隐式类型转换(自动转换)
(1)当字符串与其他数据类型进行"+"运算时,表示字符串的拼接,不再是数学运算
转换规则 :将非字符串类型的数据转换成字符串之后进行拼接,最终结果为字符串
(2)其他情况下,一律将操作数转number进行数学运算
var r1 = "我学"+"Python"; console.log(r1,typeof r1) //我学Python string var r2 = 'maple'+31; console.log(r2,typeof r2) //maple31 string var r3 = 'maple'+true; console.log(r3,typeof r3) //mapletrue string var r4 = 'maple'+null; console.log(r4,typeof r4) //maplenull string var r5 = 'maple'+undefined; console.log(r5,typeof r5) //mapleundefined string var r6 = 'maple'+NaN; console.log(r6,typeof r6) //mapleNaN string var r7 = 'maple'+5+10; console.log(r7,typeof r7) //maple510 string var r8 = 10+5+'maple'; console.log(r8,typeof r8) //15maple string
3.其他情况
var n1 = '100'+'5' //1005 string console.log(n1,typeof n1) var n2 = '100'-5 //95 console.log(n2,typeof n2) var n3 = '100'-'5' //95 console.log(n3,typeof n3) var n4 = '100'-true //99 console.log(n4,typeof n4) var n5 = '100a'-5 //NaN console.log(n5,typeof n5) var n6 = '100a'-true //NaN console.log(n6,typeof n6) var n7 = '100'+'true' //100true string console.log(n7,typeof n7) var n8 = true+100 //101 console.log(n8,typeof n8) var n9 = true+true //2 console.log(n9,typeof n9) var n10 = 100+null //100 console.log(n10,typeof n10) var n11 = 100+undefined //NaN console.log(n11,typeof n11) var n12 = 100+NaN //NaN console.log(n12,typeof n12)