강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

eunhyeongjo2412 のプロフィール画像
eunhyeongjo2412

投稿した質問数

フルスタックのための堅実なフロントエンドブートキャンプ (HTML, CSS, バニラJavaScript + ES6) [フルスタック Part2]

モダンWebのための最新Javascript変数とデータタイプ理解

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

作成

·

130

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

回答 1

1

funcoding님의 프로필 이미지
funcoding
インストラクター

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

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)로 나오는 이유도 궁금했었는데, 환경적인 차이(엔진 버전?)로 이해하였습니다.

 

감사합니다!

eunhyeongjo2412 のプロフィール画像
eunhyeongjo2412

投稿した質問数

質問する