본문 바로가기
Web dev/Javascript

자바스크립트 02 Identifier, typeof undefined, SyntaxError

by growingTangerine 2022. 10. 23.

1. 현재의 무드: 목감기라 컨디션은 6/10. 아침에 삼계탕 먹고 보리차 끓여서 목을 또똣하게 지져줬더니 조금 나은 듯 아닌듯! 햇살이 좋길래 집 앞 도서관 와서 ZEP으로 화면공유하며 함께 공부중! 

 

2. 오늘 학습한 내용 중 키워드: Identifier (식별자), undefined, SyntaxError

 

3. 오늘 학습한 내용 요약: 

 

자바스크립트 01 편에서 마지막에 남았던 궁금증. 

 

typeof undefined;
SyntaxError: Identifier 'undefined' has already been declared

string, number 등도 똑같이 타입인데 왜 undefined는 변수명으로 설정이 안될까? 궁금했었음.

(string, number는 변수명으로 설정이 가능하거든요.) 

 

저기서 말하는

 

Identifier란, '코드 내의 변수, 함수 또는 속성을 식별하는 문자열' 이다.  (숫자 포함이 가능하지만, 숫자로 시작은 불가함) 식별자는 코드의 일부이지만 문자열은 데이터이기 때문에, 식별자와 문자열은 다릅니다. (그치그치, 식별자는 식별자, 문자열은 '문자열' 이다) 자바스크립트에서 식별자를 문자열로 변환하는 방법은 없지만, 어떤 경우 문자열을 분석해 식별자로 사용할 수 있습니다. (나중에 알아보도록...!) 

 

참조: https://developer.mozilla.org/ko/docs/Glossary/Identifier 

 

식별자 - 용어 사전 | MDN

식별자는 코드 내의 변수, 함수, 혹은 속성 (en-US)을 식별하는 문자열입니다.

developer.mozilla.org

 

let undefined; // SyntaxError: Identifier 'undefined' has already been declared
let number; // undefined
let string; // undefined
let function; // SyntaxError: Unexpected token 'function'
let return; // SyntaxError: Unexpected token 'return'

이렇게, number, string은 타입 중 하나임에도 변수명 식별자로 선언이 가능하다.

그렇지만 undefined는 안되고, (왜냐면 변수명을 선언하면 undefined로 초기화되는... 초기화 값이기 때문일까?)

function, return 또한 키워드이기때문에 변수명으로 선언이 불가능하다. 

 

그렇다면, 저기에서

SyntaxError: Unexpected token;

은 어떤 에러를 이야기하는걸까?

 

우선, SyntaxError 란? SyntaxError 객체는 문법적으로 유효하지 않은 코드를 해석하려고 시도할 때 발생하는 오류를 의미합니다. 자바스크립트 엔진이 코드를 구문 분석할 때 언어의 구문에 맞지 않는 토큰이나 토큰 순서를 만나면 이 오류를 던집니다. 

 

그리고 나서 mdn에서 정확히 unexpected token이 무엇을 의미하는지 잘 이해가 안되서, 구글에 'what is unexpected token in JS' 라고 검색하니 나오는 말

 

: occur when a specific language construct was expected, but something else was provided. Thia might be a simple typo. 

 

읽고보니 mdn 문서 영어버전이었네;; ㅋㅋㅋㅋㅋㅋ여튼 이해 완... 자바스크립트 엔진이 소화할 수 있는 문법 구조상 불가한 명령어라는 거겠지? 이건 깊게 생각하기보다는 키워드는 변수명 선언 불가! 라고만 알아두면 될 듯하다.