JavaScript共有七种数据类型,包括六种基本数据类型(number、string、boolean、null、undefined、symbol)和一种引用类型。
1、number(数字类型)
number类型即数字类型,数字可以带小数点也可以不带,也可以通过科学计数法来写。
var y=123e5; // 12300000
var z=123e-5; // 0.00123
js有一个精度问题坑:
var a = 0.1;
var b = 0.2;
console.log(a+b))//0.30000000000000004
本来0.1+0.2应该等于0.3可控制台打印的却是0.30000000000000004,这是因为js采取了双精度存储。小数在前端一般的解决方法是,先扩大倍数,相加后再除以倍数:
(0.1*10 + 0.2*10) / 10 == 0.3
2、string(字符串类型)
字符串类型可以是引号中的任意文本,可使用单引号或双引号。
var str = 'hello'
3、boolean(布尔类型)
布尔类型有两种值 true或false,常用于判断中。
4、null
null类型通常是一个变量或函数未声明导致的,null类型也有一个bug是:
console.log(typeof null) //object
这也是js一直都存在的bug,注意就好。
5、undefind
undefind通常是一个变量已经声明,但并未赋值导致的。
var a ;
console.log(a)//undefined
6、symbol
symbol是ES6新增的,表示独一无二的值,由Symbol()函数生成。
console.log(Symbol('a') === Symbol('a'));//false
7、引用类型
引用类型跟前六种简单数据类型相比,不同在于简单数据类型存储的直接是值,而引用类型存储的是地址(指针)。所以就出现了下边的问题。
var people = {
name: '小明'
}
var peoplea = people;
peoplea.name = '小白';
console.log(peoplea.name)//小白
console.log(people.name)//小白
我们本来期望只改变peoplea的name,现在连people的name都改变了,这是复杂类型存储的是指针导致的。可以用深浅拷贝来解决。关于深浅拷贝的问题,我会专门再写一篇文章去介绍。