JS 数据类型总结

723 阅读2分钟

    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都改变了,这是复杂类型存储的是指针导致的。可以用深浅拷贝来解决。关于深浅拷贝的问题,我会专门再写一篇文章去介绍。