Symbol数据类型

本文详细介绍了ES6中的Symbol数据类型,探讨其独特性质和用途,如解决对象属性名冲突。通过示例展示了Symbol的创建、比较、在对象中的使用,以及如何遍历对象的Symbol属性。同时,文章还讨论了Symbol.for()和Symbol.keyFor()函数,强调了它们在全局环境中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)、Symbol介绍

在介绍Symbol之前,我们简单介绍一下JavaScript的数据类型:

JavaScript有6中数据类型,分别是:String字符串类型;Number数字类型;Object对象类型;Boolean布尔值类型;Null空值;Undefined 未定义;

这6种类型写过代码的同学都不会陌生,它们都有各自的用途。而ES6给我们带来一种全新的数据类型:Symbol。每一种全新的事物的诞生都是为了解决某种问题。Symbol的初衷:解决对象的属性名冲突。

从上面代码案例看到,我们用一个Symbol( )函数来创建一个symbol类型的变量,我们打印了一下变量sm,得到的结果是控制台输出:Symbol( ),它代表着一个独一无二的值,虽然我们看不到它长什么样子,但基本上,它有点类似字符串。

接着,我们用typeof来检测一下变量sm的类型,得到的结果是:symbol。

我们定义两个symbol类型的变量sm1,sm2,然后用全等符号===(也称严格相等,)进行比较,得到的是false。也就是他们都是独一无二的值,并不相等。

接着,我们分别打印两个变量,控制台输出的都是Symbol( ),看起来长得一模一样,实际是不相等的。

两个不一样的值,控制台输出的一样,这样无疑给我们开发调试带来一定的不便,有没有办法让他们看起来不一样呢?

有的,Symbo( )函数接受参数,用于对实例值的描述。我们试试看:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值