![e0977813460f9650b867242f65d95af8.png](https://img-blog.csdnimg.cn/img_convert/e0977813460f9650b867242f65d95af8.png)
ES6之前我们都清楚JS有六种数据类型:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object),今天笔者讲的Symbol类型是ES6才加入的,它最大的特点就如标题所说“独一无二”。
本篇文章笔者将从以下几个方面进行介绍:
- 值类型和引用类型介绍
- 如何声明一个Symbol?
- 为什么要有Symbol?
- Symbol的常用用法
- 内置常用Symbol值的用法
本篇文章阅读时间预计15分钟。
值类型和引用类型介绍
在了解Symbol之前,我们需要了解下JS的数据类型,在JS中数据类型分为两类:值类型和引用类型。
- 值类型:数值型(Number),字符类型(String),布尔值型(Boolean),null 和 underfined
- 引用类型:对象(Object)
所谓的值类型可以这样理解:变量之间的互相赋值,是指开辟一块新的内存空间,将变量值赋给新变量保存到新开辟的内存里面;之后两个变量的值变动互不影响。
如下段代码所示:
let weChatName ="前端达人"; //开辟一块内存空间保存变量 weChatName 的值“前端达人”;let touTiao =weChatName; //给变量 touTiao 开辟一块新的内存空间,将 weChatName 的值 “前端达人” 赋值一份保存到新的内存里;//weChatName 和 touTiao 的值以后无论如何变化,都不会影响到对方的值;
一些语言,比如 C,有引用传递和值传递的概念。JS 也有类似的概念,它是根据传递的数据类型推断的。如果将值传递给函数,则重新分配该值不会修改调用位置中的值。但是,如果你修改的是引用类型,那么修改后的值也将在调用它的地方被修改。
所谓的引用类型可以这样理解:变量之间的互相赋值,只是指针的交换,而并非将对象复制一份给新的变量,对象依然还是只有一个,只是多了一个指引~~;
如下段代码所示:
let weChat = { name: "前端达人