JavaScript를 하기전 웹서버의 통신흐름에 대해 알아보자.
서버들의 종류
- DNS: 도메인 주소의 IP를 사용자에게 알려주는 서버
- WEB : 사용자로부터 HTTP 요청을 받아 정적인 컨텐츠(HTML, CSS, JavaScript…)를 응답해주는 서버
- WAS : DB와 통신하여 동적인 컨텐츠를 처리하기 위한 서버 DB : 데이터를 관리하기 위한 서버
WEB vs WAS의 언어
- WEB : HTML, CSS, JavaScript, …
- WAS : JAVA, PHP, Python, …
프론트엔드 vs 백 엔드
일반적으로 프론트 엔드는 클라이언트 측(브라우저)에서 실행되는 언어를 뜻하고,
백 엔드는 서버 측에서 실행되는 언어를 뜻한다.

JavaScript 구문 : 변수
- 변수 (Variable) : 어떠한 값을 저장할 수 있는 저장 공간

- 스코프 (scope) : 변수에 접근할 수 있는 범위
전역 스코프 (Global scope) : 전역에 선언되어 있어 어디에서든지 변수에 접근할 수 있는 범위
-> 전체범위, 어디든 참조 가능
지역 스코프 (Local scope) : 변수를 선언한 지역에서만 접근할 수 있는 범위이며 2가지로 나뉨
- 블록 스코프 : {}, if문, for문 등 블록 내부에서 선언된 변수의 범위
- 함수 스코프 : 함수 내부에서 선언된 변수의 범위
- 변수의 종류
var : ES6 이전에 사용하던 변수 선언 키워드로써, 함수 스코프를 가진 변수
-> 변수 중복 선언 가능
-> 함수 외부에서 선언한 변수는 모두 전역 변수로 처리됨
-> 변수를 선언하기 이전에 변수를 참조하면 undefined를 반환함 -- 호이스팅이 발생함
-> **호이스팅(Hoisting)이란 코드가 실행되기 전 변수선언/함수선언이 최상단으로 끌어올라와져 별도의
선언을 하지 않았음에도 에러가 발생하지 않고 undefined를 반환하게 됨 (함수 표현식은 호이스팅이 불가)
let : ES6에서 도입된 변수 선언 키워드로써, 블록 스코프를 가진 변수
-> 변수 중복 선언 불가능
-> 블록 스코프를 가지고 있기 때문에, 외부에서 변수를 참조할 수 없음
-> 변수를 선언하기 이전에 변수를 참조하면 에러를 반환함
const : ES6에서 도입된 변수 선언 키워드로써, 블록 스코프를 가진 변수(상수)
-> 변수 중복 선언 불가능
-> 블록 스코프를 가지고 있기 때문에, 외부에서 변수를 참조할 수 없음
-> 변수를 선언하기 이전에 변수를 참조하면 에러를 반환함
-> 한번 값이 할당되면 변경 불가 -> 상수
- 자료형
string : 문자열
number : 숫자
boolean : 논리
object : 객체
function : 함수
undefined : 정의되지 않음

