강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của eunhyeongjo2412
eunhyeongjo2412

câu hỏi đã được viết

Bootcamp Frontend vững chắc cho Fullstack (HTML, CSS, Vanilla JavaScript + ES6) [Fullstack Part2]

Hiểu về biến và kiểu dữ liệu Javascript mới nhất cho web hiện đại

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

Viết

·

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

Câu trả lời 1

1

funcoding님의 프로필 이미지
funcoding
Người chia sẻ kiến thức

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

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
Người đặt câu hỏi

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

 

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

 

감사합니다!

Hình ảnh hồ sơ của eunhyeongjo2412
eunhyeongjo2412

câu hỏi đã được viết

Đặt câu hỏi