# 基本数据类型

JavaScript 中的基本数据类型主要包括数值类型、字符串类型、布尔类型、未定义类型、空类型。

```javascript
let num = 233;
console.log(num, typeof num);
let bin = 0b10101;
console.log(bin);
let oct = 0o777;
console.log(oct);
let hex = 0xff;
console.log(hex);
let str = 'Hello World!';
console.log(str, typeof str);
let bool = true;
console.log(bool, typeof bool);
let undef;
console.log(undef, typeof undef);
let NULL = null;
console.log(NULL, typeof NULL);
```

BigInt 数据类型是比数值类型支持范围更大的整数值。

```javascript
let num1 = 233n;
console.log(num1, typeof num1);
let num2 = BigInt(666);
console.log(num2, typeof num2);
let max = Number.MAX_SAFE_INTEGER;
console.log(BigInt(max) + BigInt(max));
```

ES6 中新增了用于存储唯一值的集合数据类型。

```javascript
let set = new Set([233, 666, 1.23, 233]);
console.log(set);
console.log(set.size);
for (let v of set) {
	console.log(v);
}
set.add('Hello World!');
console.log(set);
set.delete(666);
console.log(set);
console.log(set.has(233));
set.clear();
console.log(set);
```

ES6 中还新增了用于存储键值对的映射数据类型。

```javascript
let map = new Map();
map.set('name', 'Tom');
map.set('func', function () {
	return 'Hello World!';
});
let obj = {
	foo: 'bar'
};
map.set(obj, [233, 666, 1.23]);
console.log(map);
console.log(map.size);
for (let v of map) {
	console.log(v);
}
console.log(map.get('name'));
console.log(map.get('func')());
console.log(map.get(obj));
map.delete('name');
console.log(map);
map.clear();
console.log(map);
```

Symbol 是 JavaScript 中一种不可变且唯一的数据类型，通常用来创建独一无二的键。

```javascript
let symbol1 = Symbol();
console.log(symbol1, typeof symbol1);
let symbol2 = Symbol('Hello');
console.log(symbol2, typeof symbol2);
let symbol3 = Symbol('JavaScript');
console.log(symbol3, typeof symbol3);
```

