호출 스택
"누가 먼저 실행될까?"
자바스크립트는 프링글스통과 같다.
먼저 쌓인게 나중에 나간다.
LIFO(Last in First Out) , 후입선출이라고 부른다.
anonymous는 뭐야?
anonymous는 **이름이 없는 함수(익명 함수)**를 호출할 때 호출 스택에 표시되는 기본 이름이다.
- 브라우저나 Node.js가 코드의 시작점을 관리하기 위해 사용하는 기본 값이다.
- 우리가 함수를 선언하면서 이름을 주지 않거나, 함수 표현식으로 함수를 만들어 사용하면 생긴다.
즉 우리가 무언가를 실행하면 가장 밑에 깔리고 프로그램이 다 실행되고 annoymous까지 끝나야 실행이 끝난 것이다.
var,conmst,let
var는 js의 적폐다. 적폐의 특성을 알아보자.
가장 큰 차이점 : 블록 스코프 (var는 함수 스코프)
if(true){
var x = 3;
}
console.log(x) // 3
if(true){
const y = 3;
}
console.log // uncaught Refercence Error
function a(){
var y =3;
}
console.log(y); //에러
var는 이 스코프(중괄호)를 무시해버린다.
스코프 밖에서도 x에 접근할 수 있다.
그럼 var는 결계가 없냐? 있긴하다. function으로 감싸면 결계가 생긴다. 즉
var는 함수 스코프를 존중한다
let,const는 블록 스코프를 존중한다.
let은 여러번 선언할 수 있다. 즉 여러번 메모리주소를 바꿀 수도 있다.
const는? 한번 선언하면 메모리주소 변경이 안된다.
너무 어려운 개념이라 느끼면
const는 = 을 한번만 할 수 있고 let은 =을 여러번 쓸 수 있다. 고 생각해도 괜찮다.
템플릿 리터럴
변수랑 문자열이랑 같이 쓰기 위해 만든 것이다.
백틱(`)으로 감싸서 사용하면 되는데 작은따옴표랑(')은 다른 것이다. 백틱은 보통 왼쪽에 esc 밑 , 숫자 1번 왼쪽에 있다.
var result = '이 과자는' + won + '입니다'
// 이과자는1000원입니다.
// 앗 여기 띄어쓰기가 없네?
var won = 1000;
const result = `이 과자는 ${won}입니다.`
++++ 정보
함수 호출할 때 a() 이렇게 호출하는데 백틱 두개를 사용해 호출 할 수도 있다.
a`` 이렇게 호출할 수도 있다고 있다.
a();
a`` <- 이거 taged templete literal 이라고 부름.
객체 리터럴
데이터를 키-값 쌍으로 저장하는 객체를 생성할 때 쓰는 것이다.
- {}로 감싸고, 키와 값을 지정해준다.
const user = {
name: "내 이름",
age: 27,
job: "개발자"
};
console.log(user);
// 출력: { name: '내 이름', age: 27, job: '개발자' }
데이터를 구조화해서 저장 할 수 있다.
ES6부턴 단축 속성(Shorthand Property)를 지원한다.
const name = "내 이름";
const user = { name };
console.log(user); // { name: '내 이름' }
- 템플릿 리터럴은 문자열 생성용. 동적 값 넣기 편리!
- 객체 리터럴은 데이터를 키-값 쌍으로 저장할 때 사용
'Back-End > Node.js' 카테고리의 다른 글
Node.js 교과서 PART1 (0) | 2025.01.18 |
---|---|
다시 시작하는 Node.js, 새로 시작하는 CS (0) | 2025.01.11 |
TodoList(Node.js) (0) | 2024.11.02 |
새로운 프로젝트 시작 (4) | 2024.10.09 |