回答編集履歴
2
調整
test
CHANGED
@@ -13,3 +13,11 @@
|
|
13
13
|
console.log([...new Set(b)]); //Array(3) [ Symbol("test"), Symbol("test"), Symbol("test") ] →おなじキーで作ってもsymbol値はことなるので3つ
|
14
14
|
console.log([...new Set(c)]); //Array [ Symbol("test") ]→forを指定すると同じsymbolが作られるので1つ
|
15
15
|
```
|
16
|
+
|
17
|
+
# test
|
18
|
+
```javascript
|
19
|
+
const hoge=Symbol.for("hoge");
|
20
|
+
localStorage.hoge=hoge;
|
21
|
+
```
|
22
|
+
上記、chromeでは「Uncaught TypeError: Failed to set a named property 'hoge' on 'Storage': Cannot convert a Symbol value to a string」というエラーがでます。つまりsymbol値は文字列に変換できないということです。
|
23
|
+
|
1
調整
test
CHANGED
@@ -1 +1,15 @@
|
|
1
1
|
SymbolはプリミティブですがNumberでもStringでもないsymbol値なので文字列として参照することはできません
|
2
|
+
ただsymbol値同士は同じか違うか比較ができるだけです
|
3
|
+
|
4
|
+
# 参考
|
5
|
+
```javascript
|
6
|
+
const a=new Array(3).fill(Symbol());
|
7
|
+
const b=new Array(3).fill(null).map(()=>Symbol('test'));
|
8
|
+
const c=new Array(3).fill(null).map(()=>Symbol.for('test'));
|
9
|
+
console.log(a); // symbol値が3つ
|
10
|
+
console.log(b); // symbol値が3つ
|
11
|
+
console.log(c); // symbol値が3つ
|
12
|
+
console.log([...new Set(a)]); //Array [ Symbol() ] →中身が同じsymbolなので1つしか表示されない
|
13
|
+
console.log([...new Set(b)]); //Array(3) [ Symbol("test"), Symbol("test"), Symbol("test") ] →おなじキーで作ってもsymbol値はことなるので3つ
|
14
|
+
console.log([...new Set(c)]); //Array [ Symbol("test") ]→forを指定すると同じsymbolが作られるので1つ
|
15
|
+
```
|