브라우저는 어떻게 동작하는 걸까?

변수란 무엇이고 어떻게 사용하는지 알아보자!
var를 권장하지 않는 이유는? 🎗호이스팅
- 호이스팅이란 ? 함수 내의 변수 및 함수 선언을 각 유효 범위의 최상단으로 끌어올려주는 JS의 특징이다.
- 실제로 끌어올려지는 것은 아니고, JS parser가 내부적으로 끌어올려 처리한다.
console.log(value); //undefined var value = "Hello"; console.log(value); //"Hello"위 예제처럼 나중에 선언되는 변수를 미리 접근할 수 있다. ReferenceError는 발생하지 않으나 JavaScript는 호이스팅 된 변수를 undefined로 초기화한다.
- 함수 표현식은 호이스팅 되지 않는다.
let variable = 126; //키워드, 변수명, 값
메모리 상 주소를 의미한다.해당 주소에 기록된 값이다.!!! undefined와 null의 차이
- undefinde는 값이 정의되지 않은 상태를 의미하고 null은 해당 변수가 비어있음을 사용자가 의도적으로 나타낼 때 사용한다.

메모리가 꽉차게 된다면?
Garbage Collector를 통해 메모리를 정리가비지 컬렉션을 통해 사용하지 않는 메모리를 해제Ex) 메모리 주소를 참조

Ex) JS에서 원시 타입은 변경이 불가하다. > 새로운 메모리 주소 할당

Heap 영역과 Call Stack 영역으로 나눠진 가상 머신으로 구성참조 타입, Call Stack은 원시 타입

//결과가 나오는 값
let a = 1+2 //3
let b = a-1 //2
const c = "ABC" + 3 //"ABC3"
const d = true + true - false //1
``🎈할당연산자 : 오른쪽 표현식을 왼쪽 피연산자 값에 할당
let a = 10;
a += 10; //20 (=)등호를 다른 연산자와 같이 사용하여 복합 할당 연산자
a -= 10; //10
🎈비교연산자 : 좌측/우측 피연산자를 비교 > true or false 반환
const a = 10, b = 20;
a == b; false;
a != b; true;
a < b; true;
🎈산술연산자 : 산술연산(+,-,*,/) Number를 반환
🎈비트연산자 : 2진법 비트를 직접 조작하는 연산자
a&b; //AND
a|b; //OR
a^b; //XOR
~a; //NOT
a << 1 //Left Shift
a >> 1 //Right Shift
🎈논리연산자 : Boolean을 통해 참과 거짓을 검증하는 연산자(조건문,반복문)
a&&y; //AND
a||y; //OR
!a; //NOT
🎈삼항연산자 : 조건에 따라 값을 선택 `조건(if)? 참 : 거짓;`
🎈관계연산자 : 객체에 속성이 있는지 확인하기 위한 연산자
const a = {
name : "Jeong Tae Ho",
age : 25,
};
// 객체 키 값은 문자열
"name" in a; //true
"number" in a; //false
🎈타입연산자 : 피연산자의 타입을 문자열로 반환
const a = 25;
const b = "Male";
const c = false;
typeof a; //number
typeof b; //string;
typeof c; //boolean
전역 스코프지역 스코프함수 수준 스코프 let, const는 블록 수준 스코프
var 사용 시 오류
var a = 10; { //호이스팅 되어 변수 선언이 상단으로 올라간다. var a = 20; console.log(a); //20; } console.log(a); //20;📌 블록 내부에 새롭게 선언해도 블록 외부 변수값도 변하게 된다.
함수 내부에 rate 선언function convertUsdToKrw(dollar) {
const rate = 1113.5;
return dollar * rate;
}
console.log(convertUsdToKrw(5)); //5567.5
함수 외부에 rate 선언const rate = 1113.5;
function convertUsdToKrw(dollar) {
return dollar * rate;
}
console.log(convertUsdToKrw(5)); //5567.5
동일한 인자를 넘겨 호출한 결과 동일한 값이 나오는 걸 알 수 있다. 이렇게 자바스크립트 함수는 외부에서 선언된 변수도 자유롭게 접근 할 수 있는데 함수가 자신의 밖에서 선언된 변수에 접근하는 것을 클로저라고 한다.
호이스팅이나 클로저 모두 한번씩은 배운 것들이지만 완전히 내 것으로 만들기엔 어려움이 있었던 것 같다. 강사님께서 차분하게 잘 알려주시기 때문에 이해가 될 때까지 복습하며 깔끔하게 정리하는 습관을 더 들여나가야 겠다.. 이제 본격적인 시작이지만 좋은 사람들과 함께 공부하며 좋은 결과를 낼 수 있길!🔍