JavaScript共有八种数据类型,分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt
Symbol 代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Symbol</title>
</head>
<body>
<script>
//ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,
//前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
//创建 symbol
let s = Symbol()
console.log(typeof s) //Symbol()
let s2 = Symbol("周结婚")
let s3 = Symbol("周结婚")
console.log(s2 == s3) // flase 每个Symbol()是独一无二的
//我们希望重新使用同一个 Symbol 值,Symbol.for()方法可以做到这一点。它接受一个字符串作为参数,
//然后搜索有没有以该参数作为名称的 Symbol 值。如果有,就返回这个 Symbol 值,否则就新建一个以该
//字符串为名称的 Symbol 值,并将其注册到全局。
let s12 = Symbol.for('foo');
let s22 = Symbol.for('foo');
console.log(s12 === s22) // true
//
</script>
BigInt 是一种数字类型的数据,它可以表示任意精度格式的整数,使用 BigInt 可以安全地存储和操作大整数,即使这个数已经超出了 Number 能够表示的安全整数范围
这些数据可以分为原始数据类型和引用数据类型:
栈:原始数据类型(Undefined、Null、Boolean、Number、String)
堆:引用数据类型(对象、数组和函数)