모두가 알지만, 나만 몰랐었 용어들을 이곳에다 기록 해볼려고 합니다.
모두가 아는걸 나도 알때까지! 화이팅!
바인딩이란 식별자와 값을 연결하는 과정을 의미한다.
예를들어 변수 선언은 변수명(식별자)와 변수의 확보된 메모리 공간의 주소(실제값)를 연결(바인딩)한 것이다.
Ex) let binding = 10 에서 binding이 가리키는 값이 10(메모리 주소 0x000000F2)이 되는걸 바인딩
이라고 합니다.
사전적 의미에서 보면 유산, 산물이 된 코드라고 합니다.
레거시 코드라는 말은 더 이상 쓰기 힘들거나 화나게 만드는 코드
라고 합니다.
아래의 4가지에 해당하면 레거시 코드라고 하며, 자기자신이 예전에 만든것 또한 레거시 코드가 될 수 있습니다.
클라이언트가 서버로 객체를 전송하려면 객체를 문자열화 또는 byte형태로 변환 해야하는데 이를 직렬화
라고 합니다.
왜 직렬화를 해야하는지에 대해 의문이 생겼습니다.
왜 why? => 기기마다 서로 다른 가상 메모리 주소 공간을 갖기때문에 참조형 타입(객체, 배열, 함수, 날짜, 정규표현식 등의 타입)의 데이터들은 전달할 수 없습니다.
따라서 주소값이 아닌 Byte 형태로 직렬화한 데이터로 전달해야 파싱이 가능한 데이터가 됩니다.
예를들어 외국인과 대화할때 영어를 사용하듯 모두가 알아들을 수 있는 형태로 변환해주는 과정입니다.
실제 남미갔을 때 대화가 되는곳도 있었지만 대부분 영어로 대화가 안되긴 했었습니다.
JSON.stringify()
를 사용합니다.
const obj = {
name:'KIM',
age:27,
}
console.log(typeof obj) // object
const json = JSON.stringify(obj); // {"name":"KIM","age":27}
console.log(typeof json) // string
서버로부터 클라이언트에게 전송된 JSON데이터는 문자열 입니다. 이 문자열을 객체로서 사용하기 위해 JSON포맷의 문자열을 객체화 하는 것
을 의미합니다.
즉 직렬화와 반대로 문자열을 객체로 반환하는 것
입니다.
JSON.parse()를 사용합니다.
// 직렬화
const obj = {
name:'KIM',
age:27,
}
console.log(typeof obj) // object
const json = JSON.stringify(obj); // {"name":"KIM","age":27}
console.log(typeof json) // string
// 역직렬화
console.log(JSON.parse(json))
console.log(typeof JSON.parse(json)) // object
파싱(구문분석)이란
프로그래밍 언어의 문법에 맞게 작성된 텍스트 문서를 읽어들여 실행하기 위해 텍스트 문서의 문자열을 토큰으로 분해(어휘분석)하고, 토큰에 문법적 의미와 구조를 반영하여 트리구조의 파스트리를 생성하는 과정
을 의미합니다.
토큰
은 구문적으로 의미를 갖는최소의 단위
이며 우리가 작성하는 프로그램은 모두 이러한 토큰으로 이루어집니다.