프로그래밍 기본 용어 정리 (JS 기준)
- 표현식
- 값을 만들어내는 간단한 코드.
- 문장
- 표현식이 한 개 이상 모여서 action을 취하면 문장. 문장의 종결 여부는 ;(세미콜론) 또는 엔터로 확인.
- 그렇담 표현식 한개만 있어도 문장이 될 수 있는가? ⇒ 그렇다.
- 표현식 ⇒ 문장은 가능하지만, (⭕) 문장 ⇒ 표현식은 불가능하다. (❌)
- 왜? 문장 안에 표현식이 포함 되어 있는 구조이기 때문이다.
- 그래서 표현식과 문장의 차이점이 정확히 뭔데?
- 무언가 값을 return 하면 표현식이고, 그 값을 return하는데 도와주는 형태면 문장.
- 우리가 상대방과 의사소통을 할 때를 생각해보자. ”문장”은 감정이나 행동을 표현하는데 도움을 주는 수단이고, 감정이나 행동 자체는 “표현”한다고 사용하지 않는가. 이걸 생각하면 표현식과 문장의 차이를 느낄 수 있을 것이라 생각한다.
참고로 이 때 문장은 sentence의 의미가 아니라, statement의 의미로 사용된다.
https://dictionary.cambridge.org/ko/사전/영어/statement
보다시피 영어사전에서도, statement란 “의견을 표현하기 위한 행위”라고 나와있다.
고로 expression(표현식)이란 int a = 5; 처럼 정수에 5가 들어있어 라고 표현하는거고 statement(문장)이란건 if문, case문 처럼 표현식을 활용해서 무언가 action을 취하는 것이라 생각하면 되겠다.
- 키워드
- 언어가 처음 개발 될 때 부터 정해놓은 특별한 의미가 있는 단어들.
- 그래서 키워드는 변수명으로 사용할 수 없다.
- 키워드가 왜 필요할까? 전세계 몇천만? 몇억?명이 개발하는데, 누구는 if문을 막 providing으로 적는다고 생각해보자 그러면 코드를 어케 읽겠는가..
(물론 지금도 읽기 어렵지만)최소한의 공통된 문법은 정해줘야 하지 않겠는가.
- 식별자
- 스코프
- 스코프란, 구역을 의미한다.
- 블록스코프:
{ }
범위 안에서만 사용할 수 있음. - 함수스코프: 그 함수 안에서만 사용할 수 있음.
- 전역스코프: 전세계에서 사용할 수 있음.
전역 스코프에서 사용한 이름을 블록 스코프 안에서 사용하는건 가능하지만,
1 2 3 4
const shinchanDogName = "흰둥이"; { console.log(shinchanDogName); }
이처럼 블록 스코프에서 사용한 이름을 전역에서 사용하는건 불가능하다.
1 2 3 4
{ const shinchanDogName = "흰둥이"; } console.log(shinchanDogName);
- 상수
- 변할 수 없는 값. const로 선언
- 한 번 선언된 상수의 값은 변경할 수 없다. 예를 들어서 내가 블록 스코프 안에다
const name = “짱구”;
라고 선언하면서 name에다 “짱구”라는 문자열 자료값을 넣어줬다고 가정하자. 근데 그 뒤에name = “철수”;
라고 자료값을 또 넣을 수 있겠는가? 불가능하다. 왜일까? 애초에 상수가 변할 수 없는 값이라는 뜻인데, 동일한 식별자 이름으로 여러번 값을 바꿔서 사용할 수 있으면 그게 변수지, 상수겠는가? - 그래서 상수는 선언할 때 동시에 값을 무조건 넣어줘야 된다.
const name; name = “짱구”;
이런게 불가능(❌).
- 변수
- 변할 수 있는 값. let으로 선언
- 변수는 상수랑 반대로 값을 변경할 수 있다. 여기선
let name = “짱구”; name = “철수”;
이런게 가능하다는 말씀.
참고로 상수든 변수든 간에 같은 스코프 내에 동일한 식별자 이름은 두 번 이상 사용할 수 없다.
let name = “짱구”; let name = “철수”;
든,const name = “짱구”; const name = “철수”;
는 불가능하다. 왜일까? 사람 입장에서 동일한 이름을 두 번 쓰면 혼란스럽듯이, 컴퓨터도 동일한 이름을 중복 선언하면 기존 값을 덮어쓸지, 새롭게 추가할지 결정할 수 없어서 오류를 내는 것이다.
- 전위, 후위
- (아래 코드 기준)
- 전위 연산자는 일단 a에다가 +1을 하고, 그 다음에 log를 찍는거다.
후위 연산자는 일단 a를 찍고 그 다음에 +1을 하는 걸 의미한다.
1 2 3
let a = 5; console.log(a++); // 5 console.log(++a); // 7
This post is licensed under CC BY 4.0 by the author.