JavaScript 语言的第七种数据类型 - Symbol
前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
symbol生成
let s = Symbol(); typeof s // "symbol"
Symbol函数可以接受一个字符串作为参数
let s1 = Symbol('foo');
let s2 = Symbol('bar');
s1 // Symbol(foo)
s2 // Symbol(bar)
s1.toString() // "Symbol(foo)"
s2.toString() // "Symbol(bar)"
Symbol函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的Symbol函数的返回值是不相等的。
// 没有参数的情况
let s1 = Symbol();
let s2 = Symbol();
s1 === s2 // false
// 有参数的情况
let s1 = Symbol('foo');
let s2 = Symbol('foo');
s1 === s2 // false
ymbol 值也可以转为布尔值,但是不能转为数值。
let sym = Symbol();
Boolean(sym) // true
!sym // false
if (sym) {
// ...
}
Number(sym) // TypeError
sym + 2 // TypeError
Symbol.prototype.description
description 是一个只读属性,它会返回 Symbol 对象的可选描述的字符串。
console.log(Symbol('desc').description); // expected output: "desc" console.log(Symbol.iterator.description); // expected output: "Symbol.iterator" console.log(Symbol.for('foo').description); // expected output: "foo" console.log(Symbol('foo').description + 'bar'); // expected output: "foobar"
浙公网安备 33010602011771号