강의

멘토링

커뮤니티

Inflearn Community Q&A

eunhyeongjo2412's profile image
eunhyeongjo2412

asked

Solid Frontend Bootcamp for Full Stack (HTML, CSS, Vanilla JavaScript + ES6) [Full Stack Part2]

Understanding Modern JavaScript Variables and Data Types for the Modern Web

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

Written on

·

129

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인데 어떤 이유로 다르게 나오는건지 궁금합니다.

 

 

 

 

HTML/CSSjavascriptes6

Answer 1

1

funcoding님의 프로필 이미지
funcoding
Instructor

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

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
Questioner

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

 

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

 

감사합니다!

eunhyeongjo2412's profile image
eunhyeongjo2412

asked

Ask a question