딥다이브 3

💡 클로져

✔️ 렉시컬 스코프 ‘’자바스크립트 엔진은 함수를 어디서 호출했는지가 아닌, 함수를 어디서 정의했는지에 따라서 상위 스코프 참조를 결정한다’’ 함수의 상위 스코프는 함수가 정의된 위치에서 결정되고, 변하지 않는다(정적 스코프) 실행 컨텍스트 개념을 적용시켜 보면 함수가 호출되어 실행 컨텍스트가 생성되고, 그 함수 렉시컬 환경의 외부 렉시컬 환경에 할당할 참조값을 결정한다는 것과 같은 의미이다. 이 참조값은 함수가 평가되는 시점에서 함수의 위치(환경)에 따라 결정된다, 이것이 렉시컬 스코프 ✔️ 자바스크립트 함수 내부 슬롯 [[Environment]] 렉시컬 스코프가 가능하려면, 함수가 호출되는 위치와 상관없이 상위 스코프에 대한 참조값을 기억하고 있어야 한다. "함수 객체 내부슬롯 [[Environmen..

javascript/DeepDive 2023.02.01

[Js 딥다이브] 17. 생성자 함수에 의한 객체 생성

Js 에서 객체를 생성하는 방법은 여러가지가 있다. 객체는 프로퍼티를 사용해서 객체의 상태를 표현하고, 객체의 메서드를 활용해서 프로퍼티를 참조하거나 프로퍼티 상태를 변경한다. 리터럴로 생성하는 방법은 간단하고 직관적이라는 장점이 있지만, 동일한 프로퍼티를 갖는 객체를 여러개 생성해야 하는 경우, 같은 코드를 반복적으로 써야 하므로 굉장히 비효율적이다. 이를 해결할 수 있는 생성자 함수로 객체를 생성하는 방법을 알아보자! 1. new 연산자 + Object 생성자 함수 const my_obj = new Object(); my_obj.Id = 'woong'; console.log(my_obj); // {Id : woong} 🧐 생성자 함수? new 연산자와 함께 호출하여 객체를 생성하는 함수를 뜻한다 꼭 ..

카테고리 없음 2022.11.20

[Js 딥다이브] 12. 함수 (2)

3. 함수 호출 📌 매개변수와 인수 자바스크립트는 동적 타입 언어이기 때문에, 함수를 정의할때 사용하는 매개변수와 호출할 때 사용하는 인수의 타입과 갯수에 제한이 없다. 인수의 갯수가 매개변수의 갯수보다 많거나 적더라도 에러는 발생하지 않는다. function add(x, y){ return x + y; } console.log(add(2, 4)); // 6 // 인수가 부족한 경우 매개변수 y에 할당된 값이 없으므로 undefined console.log(add(2)); // NaN // 초과된 인수는 arguments 객체에 보존된다 console.log(add(2, 4, 10)); // 6 자바스크립트는 동적 타입 언어이기 때문에, 함수를 정의하는 시점에 매개변수의 타입을 결정할 수 없다. 따라서 ..

javascript/DeepDive 2022.11.06