JS数据类型
-
基本数据类型(五种,ES6加了一种Symbol)
-
String ------ 字符串类型,右数字字母字符串以及标点符号组成,必须放在单引号或者双引号中
字符串有length属性,用双引号
"hello"
或 单引号'123ere'
表示都可以;如果字符串里包含有特殊字符,如"he said \'hello\'."
,需要用转义符\
,表示后面紧跟的是特殊字符。 -
Number ------ 数字类型 ,包括整数型浮点型
数值有多种表示方法,比如说字面量和科学计数法,当数值的小数点的前面位数超过21位或者小数点后的零多于5个的时候,JS会自动将数值用科学计数法表示,其它情况直接用字面量表示。
对于数值中的整数,有四种进制可以表示,分别是二进制(以0b开头)、八进制(以0开头)、十进制(没有前导数字)、十六进制(0x开头)。
除了常规的数字,还有几种特殊的数值,+0、-0、NaN、Infinity(后面具体介绍)
Boolean ------ 布尔类型,只有true和false两种值
Null ------- 空对象类型,表示被定义了,但是定义的是空值
Undefined ------ 未定义,一般指的是已经声明,但是没有赋值的变量,如var a
-
-
引用类型
- Object(由一堆属性和方法组成的集合)
另一种分组方式
值类型:Number、String、Boolean、Null和Undefined
引用类型:Object、Array、Function等
值类型的数据存储在栈中;而引用类型的数据存储在堆中,栈中只存对应堆的地址。
typeof()
用于判断数据类型,返回值为6个字符串,分别为string
、Boolean
、number
、function
、object
、undefined
var a = ['a',2,null],
b = 34,
c = 'adsfas',
d = function(){console.log('我是函数')},
e = ture,
f = null,
g;
console.log(typeof(a));//object
console.log(typeof(b));//number
console.log(typeof(c));//string
console.log(typeof(d));//function
console.log(typeof(e));//boolean
console.log(typeof(f));//object
console.log(typeof(g));//undefined
数据类型之间的转换
1.转成String
JS六种数据类型均可转成string,可使用toString()
方法 或者+''
,需要注意字符串里的符号。
2.转成Number
JS提供了parseInt()
用于转换成整数,和parseFloat()
用于转换成浮点数。parseInt()
方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()
方法的第二个参数指定的,
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
parseInt("AF", 16); //returns 175
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10
parseInt("010"); //returns 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10 如果十进制有前导0,那么必须加上基10,否则会当成八进制处理
parseFloat()
方法没有基模式,必须由十进制数来表示浮点数
parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
另外,可以用value - 0
的方式快速获得数值。
3.转成Boolean值
Boolean(value)
,通常用于条件判断里面,if(value){}
,除了以下五个值Null、undefined、0(-0,+0)、''
为false之外,其它所有均为true。
除此之外,可以用!!value
来直接获得Boolean值,这样比较简便。
4.强制转换
Boolean(value)
——把给定的值转换成Boolean型; (遵循以上规律)
Number(value)
——把给定的值转换成数字(可以是整数或浮点数)
Number(false) // 0
Number(true) // 1
Number(undefined) // NaN
Number(null) // 0
Number( "5.5 ") // 5.5
Number( "56 ") // 56
Number( "5.6.7 ") // NaN
Number(new Object()) // NaN
Number(100) // 100
String(value)
——把给定的值转换成字符串
var s1 = String(null); //"null" 强制转换
var oNull = null;
var s2 = oNull.toString(); //won't work, causes an error
误区
关于"=="
和"==="
JavaScript是一门弱类型语言,表达式运算赋值等操作都会导致类型转换。
"=="
: 叫“相等运算符”,两边值类型不同的时候,要先进行类型转换为同一类型后,再比较值是否相等
"==="
:叫“严格运算符”,不做类型转换,类型不同的结果一定不等
var a = 1,b = '1'
a == b //true
a === b //false