목록전체 글 (59)
얼레벌레
var 키워드로 선언한 변수는 여러 문제점이 존재함 - 변수 호이스팅에 의해 변수 선언문이 런타임 이전에 실행 - 변수 중복 선언 가능 - 함수 레벨 스코프 → let, const 키워드로 선언한 변수를 사용하기 let ▪️ 변수 중복 선언 금지 let foo=3; let foo=5; // SynataxError: Identifier has already been declared ▪️ 블록 레벨 스코프 - 함수뿐만 아니라 while문, for문, if문, try/catch문도 지역 스코프로 인정 ▪️ 변수 호이스팅 - let 키워드로 선언한 변수는 변수 호이스팅이 발생하지 않는 것처럼 보임 - var 키워드는 선언단계와 초기화단계가 동시에 일어나지만 let 키워드는 분리되어 진행됨 → 따라서, 초기화 단..

변수에는 생명주기(선언에 의해 할당된 후 소멸될 때까지의 기간)이 있음 - 생명주기동안 메모리 공간을 점유하게 됨 ▪️ 지역변수의 생명주기 - 변수 선언은 호이스팅에 의해 런타임 이전에 엔진에 의해 먼저 실행되는데, 이는 전역변수에 해당하는 말임 - 지역변수는 해당 지역변수가 선언된 함수 내부에서 호이스팅 발생! → 지역 변수의 생명주기 = 함수의 생명주기 - 호이스팅 : 변수 선언이 스코프의 선두로 끌어 올려진 것처럼 동작하는 js의 특징 ⇨ 호이스팅은 스코프 단위로 동작 ▪️ 전역변수의 생명주기 - 전역변수의 생명주기 = 전역 객체(globalThis)의 생명주기 - 전역변수의 문제점 ∙ 암묵적 결합 - 모든 코드가 전역변수를 참조하고 변경할 수 있게 됨 ∙ 긴 생명주기 - 메모리 리소스를 오랜시간 ..
스코프(유효범위) : 식별자가 유효한 범위 - 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙으로 스코프를 통해 어떤 변수를 참조할지 결정함 - 다른 스코프에선 같은 이름의 식별자를 사용가능케 함 → 스코프 = 네임스페이스 전역변수는 어디서든 참조할 수 있지만 지역변수는 자신의 지역 스코프와 하위 지역 스코프에서만 유효함 스코프 체인 : 스코프가 계층적으로 연결된 것 - 함수의 중첩에 의해 중첩 함수의 지역 스코프는 중첩 함수를 포함하는 외부 함수의 지역 스코프와 계층적 구조를 가짐 ✅ 변수를 참조할 때 자바스크립트 엔진은 스코프 체인을 통해 변수를 참조하는 코드의 스코프에서 시작해 상위 스코프 방향으로 이동하며 변수 검색 → 따라서, 상위 스코프에서 유효한 변수는 하위 스코프에서 참조할 수 있지만..

함수 : 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 - 함수 사용의 이점: 코드의 재사용, 유지보수의 편의성, 코드의 신뢰성, 가독성 향상 함수 정의 ▪️ 함수 선언문 - 함수 리터럴과 형태가 동일하지만, 함수 리터럴은 함수 이름을 생략할 수 있으나 함수 선언문은 함수 이름 생략 불가 - 표현식이 아닌 문으로 실행시 완료 값으로 undefined 출력 → 변수에 할당 불가 - 자바스크립트 엔진은 생성된 함수를 호출하기 위해 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성하고 함수 객체 할당 function add(x,y){ return x+y; } // 함수이름 필요 function (x,y){ return x+y; } // SyntaxError: Functio..
백준 #1931 회의실 배정 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나..

자바스크립트의 모든 타입은 크게 원시타입과 객체타입으로 나눌 수 있음 원시타입 - 원시값이란? 변경 불가능한 값(읽기 전용 값)으로 값자체를 변경할 수 없다는 것 - 변수에 원시값 할당 시 실제 값을 저장한다 ⇨ 변수는 언제나 재할당으로 교체가 가능하다. 변수값이 아니라 값자체의 불변성을 칭함 → 이러한 성질은 데이터의 신뢰성을 보장 ✔️ 불변성 : 변수값을 변경하기 위해 원시값 재할당 시 새로운 메모리 공간을 확보해 저장하고 메모리 공간의 주소를 변경하는 특성 🔹 변수에 변수를 할당하고 값을 변경해도 다른 변수의 값은 변하지 않는다 → 값이 같을지라도 다른 메모리 공간에 저장된 별개의 값임 객체타입 - 객체타입이란? 변경 가능한 값으로 동적으로 프로퍼티를 생성할 수도 삭제할 수도 있음 - 변수에 객체 ..