인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

euny님의 프로필 이미지

작성한 질문수

풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]

모던 웹을 위한 최신 Javascript 변수와 데이터 타입 이해

Symbol 관련 테스트 코드 실행 결과 문의

작성

·

61

0

Symbol 관련 테스트 코드를 Sandbox로 확인해 보았는데 결과가 다르게 나와서 문의드립니다.

Javascript로 sandbox를 create하였고, 생성된 index.mjs 파일에 강의내용의 Symbol 테스트 코드를 동일하게 작성해여 테스트 하였습니다.

let testSymbol1 = Symbol(1);
let testSymbol2 = Symbol(1);
console.log(typeof testSymbol1, testSymbol1);
console.log(typeof testSymbol2, testSymbol2);

console.log(testSymbol1 == testSymbol2);
console.log(testSymbol2 === testSymbol2);

Console로 확인한 결과는

2symbol Symbol(1)

false

true

 

이렇게 나옵니다.

null로 나오지 않고, === 결과도 true인데 어떤 이유로 다르게 나오는건지 궁금합니다.

 

 

 

 

답변 1

1

잔재미코딩 DaveLee님의 프로필 이미지

안녕하세요. 답변 도우미입니다.

Symbol은 호출될 때마다 고유한 심볼 값을 생성하기 때문에, Symbol(1)을 두 번 호출하면 서로 다른 객체가 됩니다. 따라서 testSymbol1 == testSymbol2false가 나오며, 같은 참조인 testSymbol2 === testSymbol2true가 됩니다.

이외에는 출력환경에 따라 조금씩 달라질 수도 있지만, 다음과 같이 type 은 symbol, 해당 값은 Symbol(1) 이 되는 것이 일반적입니다. 혹시 영상? 과 다른 부분이 있다면, dream@fun-coding.org 로 메일주시면 검토해서 답변드리겠습니다. 제가 출장중이라서, 금주말까지 답변드리겠습니다.

감사합니다.

CleanShot 2025-04-07 at 20.15.37@2x.png

 

euny님의 프로필 이미지
euny
질문자

답변 감사드립니다. 제가 테스트한 === 코드에 오타가 있었음을 확인하였습니다.(testSymbol1을 2로 잘못 적었네요..)

 

symbol null이 아닌 symbol Symbol(1)로 나오는 이유도 궁금했었는데, 환경적인 차이(엔진 버전?)로 이해하였습니다.

 

감사합니다!

euny님의 프로필 이미지

작성한 질문수

질문하기