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
```smart header="`map[key]` isn't the right way to use a `Map`"
45
-
Although `map[key]` also works, e.g. we can set`map[key] = 2`, this is treating `map` as a plain JavaScript object, so it implies all corresponding limitations (no object keys and so on).
44
+
```smart header="`map[key]`는 `Map`을 쓰는 바른 방법이 아닙니다."
45
+
`map[key] = 2`로 값을 설정하는 것 같이`map[key]`를 사용할 수 있긴 합니다. 하지만 이 방법은 `map`을 일반 객체처럼 취급하게 됩니다. 따라서 여러 제약이 생기게 되죠.
46
46
47
-
So we should use `map` methods:`set`, `get`and so on.
47
+
`map`을 사용할 땐 `map`전용 메서드`set`, `get`등을 사용해야만 합니다.
48
48
```
49
49
50
-
**맵에는 객체도 키로 사용할 수 있습니다.**
50
+
**맵은 키로 객체를 허용합니다.**
51
51
52
52
예시:
53
53
@@ -63,9 +63,9 @@ visitsCountMap.set(john, 123);
63
63
alert( visitsCountMap.get(john) ); // 123
64
64
```
65
65
66
-
객체를 키로 사용할 수 있다는 점은 `맵`의 가장 중요한 기능 중 하나입니다. 키가 문자열만으로 이뤄졌다면 `객체`를 자료구조로 쓸 수 있습니다. 하지만 객체형 키를 `객체`에는 쓸 수 없습니다.
66
+
객체를 키로 사용할 수 있다는 점은 `맵`의 가장 중요한 기능 중 하나입니다. `객체`에는 문자열 키를 사용할 수 있습니다. 하지만 객체 키는 사용할 수 없습니다.
`visitsCountObj`는 객체이기 때문에 모든 키를 문자형으로 변환시킵니다. 이 과정에서 `john`도 문자형으로 형 변환되어 `"[object Object]"`가 됩니다.
83
+
`visitsCountObj`는 객체이기 때문에 모든 키를 문자형으로 변환시킵니다. 이 과정에서 `john`은 문자형으로 변환되어 `"[object Object]"`가 됩니다.
84
84
85
85
```smart header="`맵`이 키를 비교하는 방식"
86
86
`맵`은 [SameValueZero](https://tc39.github.io/ecma262/#sec-samevaluezero)라 불리는 알고리즘을 사용해 값의 등가 여부를 확인합니다. 이 알고리즘은 일치 연산자 `===`와 거의 유사하지만, `NaN`과 `NaN`을 같다고 취급하는 것에서 일치 연산자와 차이가 있습니다. 따라서 맵에선 `NaN`도 키로 쓸 수 있습니다.
0 commit comments