Scope 스코프란? 스코프는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념 var , let, const 키워드로 선언한 변수의 스코프는 다르게 동작 스코프: 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 스코프는 식별자가 유효한 범위 식별자 결정: JS 엔진은 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야할 것인지를 결정 스코프는 JS 엔진이 식별자를 검색할 때 사용하는 규칙 스코프를 통해 식별자인 변수이름의 충돌을 방지하여 같은 이름의 변수를 사용할 수 있게 함 스코프 내에서 식별자는 유일해야 하지만 다른 스코프에는 같은 이름의 식별자를 사용할 수 있다. var 키워드로 선언된 변수는 같은 스코프 내에서 중복..
명령형, 선언형의 차이 명령형 프로그래밍 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것 ‘어떻게’ 계산 할지 보다는 ‘무엇’이 계산될 것인지 알고리즘을 명시하고 목표는 명시하지 않음 명령형 프로그래밍은 개념적으로 친밀하고 직접적으로 구체화되어 있어, 대부분의 프로그래밍 언어들은 명령형임. ex) c, java, kotlin .. function addOne (arr) { let results = []; for(let i=0; i
상속 JS에서는 class 키워드를 지원하기 시작했으나 문법적인 양념일 뿐이며, 여전히 프로토타입 기반의 언어이다. 상속 관점에서 JS의 유일한 생성자는 객체뿐. 각각의 객체는 [[Prototype]]이라는 은닉(private) 속성을 가지는데 자신의 프로토타입 이 되는 다른 객체를 가리킴. 그 객체의 프로토타입 또한 프로토타입을 가지고있고 무한반복 null을 프로토타입으로 가지는 오브젝트는 더 이상 프로토 타입이 없다고 정의 → 프로토타입 체인의 종점 역할 이러한 점이 JS의 약점이자 강점이다. 프로토타입 체인을 이용한 상속 속성상속 JS 객체는 동적인 자기만의 속성과 프로토타입 객체에 대한 링크를 가짐 객체의 속성에 접근하려 한다면 객체 자체 속성 뿐 아닌 프로토타입 체인의 종단까지 탐색함. 객체의 ..
생각 주제: class와 함수의 차이는 무엇인가요? 함수 함수란 자신의 외부(재귀 함수의 경우 스스로) 코드가 ‘호출’할 수 있는 하위 프로그램 명령문의 시퀀스로 구성된 함수 본문을 가진다. 함수는 function 객체이다. Class Class 정의 객체를 생성하기 위한 템플릿 클래스는 데이터와 이를 조작하는 코드를 하나로 추상화 함 Class는 특별한 함수이다. class 문법도 class표현식 & class 선언 두 가지 방법을 제공 Class 선언 class 키워드 뒤에 클래스 이름. class Rulu { constructor(name, age) { this.name = name; this.age = age; } } Hoisting 함수 선언과 클래스 선언의 중요한 차이점은 함수는 정의하기 전에..
생각 주제 : 함수를 선언하는 다양한 방식은 각각 어떤 차이가 있나요? 어떤 경우에 어떤 방식을 활용하고 있나요? 함수 선언문 function 함수이름(복수의, 매개변수는, 콤마로, 구분합니다) { /* 함수 본문 */ } 일반적인 함수가 필요한 경우 가장 적합 function 정의부만 존재하고 별도의 할당 명령이 없음 반드시 함수명이 정의되어야. 한번 선언하고 나서, 전체 코드 여러 위치에서 호출할 수 있음 함수 호출과 함께 현재 범위에서 변수를 생성하기 때문에 재귀 또는 이벤트 리스너 대응에 유용 항상 키워드 function으로 시작함. 그렇지 않으면 전부 표현 함수 표현식 js는 함수를 특별한 종류의 값으로 취급. (특별한 동작을 하는 구조로 취급하지 X) 함수가 변수에 할당. (정의한 functi..
static과 class static 메서드 "prototype"이 아닌 클래스 함수 자체에 메서드를 설정 메서드를 프로퍼티 형태로 직접 할당하는 것과 동일한 일을 함 어떤 특정한 객체가 아닌 클래스에 속한 함수를 구현하고 할 때 주로 사용 매개변수를 이용해 관련 정보가 담긴 클래스 객체생성 → constructor 비어있는 객체 생성 → static(?) ex) class Article{ constructor(title, date) { this.title = title; this.date = date; } static createTodays() { return new this("Today's digest", new Date()); } } 🫧정적 메서드는 특정 클래스 인스턴스가 아닌 클래스 ‘ 전체’에 ..