let a=Symbol.for('my');
let b=Symbol.for('my');
a==b;//true,到此处,看似已经与上面相抵触,其实不然Symbol(my)仅产生了一个symbol数据,a和b都是同一个值,下面可看例子:let ab=Symbol();
let a=ab;
let b=ab;
a==b;//true,这里便是上例子的解释let a=Symbol('my');
let b=Symbol.for('my');
Symbol.keyfor(a);//undefined
Symbol.keyfor(b);//my///Symbol.keyfor()方法接收一个Symbol.for()产生的数据,返回其对应描述(标记),由于a直接由Symbol()产生,故未能识别let arr1=[1,2,3];
let arr2=['a','b'];
arr1[Symbol.isConcatSpreadable]=false;
arr1.concat(arr2);//[[1,2,3],a,b]
arr1[Symbol.isConcatSpreadable]=true;
arr1.concat(arr2);//[1,2,3,a,b]////[Symbol.isConcatSpreadable]表示concat进行拼接时候,是否展开,默认true。