본문 바로가기
728x90
반응형

Study/Javascript 왕초보17

[Javascript] 잠시 쉬어갑니다. 아직 17장을 마무리하지 못한 상태이지만 Javascript 왕초보 공부는 잠시 쉬어갑니다. 팀 프로젝트를 시작하게 되어서 당분간 그곳에 매진해야 할 것 같습니다! 끝나고 다시 이어가겠습니다. 2022. 6. 2.
[Javascript] 17장 생성자 함수에 의한 객체 생성 (deep dive) 10장 객체 리터럴에서 객체 리터럴에 의한 객체 생성 방식을 살펴 보았다. 객체 리터럴에 의한 객체 생성 방식은 가장 일반적이고 간단한 객체 생성 방식이다. 이번 장에서는 다양한 객체 생성 방식 중에서 생성자 함수를 사용하여 객체를 생성하는 방식을 살펴본다. 객체 리터럴을 사용하는 것과 생성자 함수를 사용하는 것의 장단점을 살펴보자. Object 생성자 함수 new 연산자와 함께 object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다. // 빈 객체 생성 const person = new Object(); // 프로퍼티 추가 person.name = 'Lee'; person.sayHello = function () .. 2022. 5. 30.
[Javascript] 16장 정리하다가 그냥 읽어보기만 하기로.. 내부 슬롯과 내부 메서드 앞으로 살펴볼 프로퍼티 어트리뷰트를 이해하기 위해 먼저 내부 슬롯과 내무 메서드의 개념에 대해 알아보자. 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메서드(pseudo method)다. ECMAScript 사양에 등장하는 이중 대괄호([[...]])로 감싼 이름들이 내부 슬롯과 내부 메서드다. 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로 자바스크립트는 내부 슬롯과 내부 메서드에 직접적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다. 단, 일부 내부 슬롯과 내부 메서드에 한하여 직접적으로 접근할 수 있는 수단을 제공하기는 한.. 2022. 5. 27.
[Javascript] 15장 let, const 키워드와 블록 레벨 스코프 (deep dive) var 키워드로 선언한 변수의 문제점 var 키워드로 선언한 변수는 다음과 같은 특징이 있다. 이는 다른 언어와는 구별되는 독특한 특징으로, 주의를 기울이지 않으면 심각한 문제를 발생시킬 수 있다. 1. 변수 중복 선언 허용 var 키워드로 선언한 변수는 중복 선언이 가능하다. var x = 1; var y = 1; var x = 100; var y; console.log(x); // 100 console.log(y); // 1 위 예제는 var 키워드로 x와 y를 중복 선언 하였다. var 키워드는 중복 선언이 가능하고 중복 선언 시 초기화문이 있으면 var 키워드가 없는 것 처럼 동작하고 초기화문이 없으면 무시된다. 중복 선언은 이미 동일한 이름의 변수가 존재하는 것을 잊어버리고 변수를 중복 선언하면.. 2022. 5. 26.
[Javascript] 14장 전역 변수의 문제점 (deep dive) 전역 변수의 무분별한 사용은 위험하다. 전역 변수를 반드시 사용해야 할 이유를 찾지 못한다면 지역 변수를 사용해야 한다. 이번 장에서는 전역 변수의 문제점과 전역 변수의 사용을 억제할 수 있는 방법을 살펴보자. 변수의 생명 주기 변수는 선언에 의해 생성되고 할당을 통해 값을 갖는다. 그리고 언젠가 소멸한다. 변수는 생물과 유사하게 생성되고 소멸되는 생명 주기가 있다. 1. 지역 변수의 생명 주기 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다. 일반적으로 지역 변수의 생명 주기는 함수의 생명주기와 일치한다. function foo() { var x = 'local'; console.log(x); // local return x; } foo(); console.log(x.. 2022. 5. 24.
[Javascript] 13장 스코프 (deep dive) 스코프란? 스코프(유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어에서 기본적이며 중요한 개념이다. 자바스크립트의 스코프는 다른 언어의 스코프와 구별되는 특징이 있으므로 주의가 필요하다. 그리고 var 키워드로 선언한 변수와 let 또는 const 키워드로 선언한 변수의 스코프도 다르게 동작한다. 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있고 함수 몸체 외부에서는 참조할 수 없다. 이것이 매개변수를 참조할 수 있는 유효범위, 즉 매개변수의 스코프가 함수 몸체 내부로 한정되기 때문이다. function add(x, y) { console.log(x, y); return x + y; } add(2, 5); // 매개변수는 함수 몸체 내부에서만 참조할 수 있다. console.log(x, y);.. 2022. 5. 24.
[Javascript] 12장 함수(2) (deep dive) 참조에 의한 전달과 외부 상태의 변경 // 매개변수 primitive는 원시 값을 전달받고, obj는 객체를 전달받는다 function changeVal(primitive, obj){ primitive += 100; obj.name = 'Kim'; } // 외부 상태 var num = 50; var person = { name: 'Lee' }; console.log(num); // 50 console.log(person); // {name: "Lee"} changeVal(num, person); console.log(num); // 50 console.log(person); // {name: "Kim"} 원시 타입 인수를 받은 매개변수 primitive의 경우 원시 값은 변경 불가능한 값이므로 직접 변경.. 2022. 5. 17.
[Javascript] 12장 함수(1) (deep dive) 함수란 수학의 함수는 입력을 받아 출력을 내보내는 일련의 과정을 정의한 것이다. 프로그래밍 언어의 함수도 수학의 함수와 같은 개념이다. 프로그래밍 언어의 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 이때 함수 내부로 입력을 전달받는 변수를 매개변수(parameter), 입력을 인수(argument), 출력을 반환값(return value)이라 한다. 또한 함수는 값이며, 여러 개 존재할 수 있으므로 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있다. // 함수 정의 function add(x, y){ // add기 함수 이름. x, y가 매개변수 return x + y; // x + y 가 반환값 } // 함수 호출 add(2, 5); //.. 2022. 5. 16.
[Javascript] 11장 원시 값과 객체의 비교 (deep dive) 6장 데이터 타입에서 보았듯이 자바스크립트의 데이터 타입은 크게 원시 타입과 객체 타입으로 구분된다. 원시 타입과 객체타입은 크게 세 가지 측면에서 다르다 1. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 이에 비해 객체 타입의 값, 즉 객체는 변경 가능한 값이다. 2. 원시 값을 변수에 할당하면 메모리 공간에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 메모리 공간에는 참조값이 저장된다. 3. 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다(값에 의한 전달). 이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다(참조에 의한 전달). 원시 값 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 한번 생성된 .. 2022. 5. 16.
728x90
반응형