You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// 不能与基本类型进行运算constsys=Symbol('sys')sys+1// Uncaught TypeError: Cannot convert a Symbol value to a number// 显式的转为字符串sys.toString()// Symbol(sys)// 转为布尔型!sys// false
前言不搭后语
symbol 是什么
symbol
是es6
中引入的一种基本数据类型。symbol
类型的值是通过Symbol()
函数来生成的,但是它不是构造函数,不能使用new
。symbol
类型的值是独一无二的。symbol 语法
可以像下面这样生成一个symbol类型的值。
参数
description
:可选,是一个字符串类型。如果传入的
description
是一个对象,则会调用toString
方法将对象转为字符串,然后再生成symbol
类型的值。description
的主要作用是区分symbol
。由于
symbol
类型的值是唯一的,所以即使传入相同的description
生成的、Symbol()
函数返回值也是不通过的。运算
symbol
类型的值,不能与其他基本类型的值进行运算,但是symbol
可以显示的转为字符串。Sysmbol.prototype.description
可以返回
symbol
的描述。作为属性名使用
由于
symbol
值唯一,所以当对象需要唯一的属性名时,可以使用symbol
类型的值。不能使用点运算符
使用
symbol
值作为属性名时,不能使用点运算符,必须放在方括号之中。不能被遍历
需要注意的是,
symbol
类型的属性名,是不能被遍历的(for in、for of 遍历不到 symbol)
。JSON.stringify()
JSON.stringify()
会忽略掉symbol
值的属性。参考文章
ECMAScript 6 入门-阮一峰
简单了解ES6/ES2015 Symbol() 方法
The text was updated successfully, but these errors were encountered: