执行以下程序,下列选项中,说法正确的是()
var s1 = Symbol('a'); var s2 = Symbol('a'); var s3 = Symbol.for('b'); var s4 = Symbol.for('b'); console.log(typeof s1); ...① console.log(s1==s2); ...② console.log(s3==s4); ...③
执行以下程序,下列选项中,说法正确的是()
var s1 = Symbol('a'); var s2 = Symbol('a'); var s3 = Symbol.for('b'); var s4 = Symbol.for('b'); console.log(typeof s1); ...① console.log(s1==s2); ...② console.log(s3==s4); ...③
①式输出结果为Object
②式输出结果为false
③式输出结果为false
创建Symbol空对象,可以使用new Symbol()或者Symbol()
Symbol为ES6新增的基本数据类型,表示独一无二的值。
Symbol()函数会返回symbol类型的值,每个从Symbol()返回的symbol值都是唯一的。
Symbol.for() 返回由给定的 key 找到的 symbol,否则就是返回新创建的 symbol
因此s1和s2是两个值都为a的不同symbol,s3创建了key为b的symbol,s4根据b找到s3的symbol,所以s1≠s2,s3==s4
var s1 = Symbol('a'); var s2 = Symbol('a'); var s3 = Symbol.for('b');//找不到key=b的symbol,新创建一个key为b的symbol var s4 = Symbol.for('b'); //找到s3刚创建的symbol console.log(typeof s1);...① //typeof s1 = 'symbol' symbol为es6新增类型 console.log(s1==s2); ...② //symbol类型每个都是独一无二的 console.log(s3==s4); ...③ //s3,s4的key都是b,都找到同一个symbol,true