Javascript/모던자바스크립트 Deep Dive
-
자바스크립트 생성자함수, 인스턴스, 함수와 일급객체, 프로퍼티Javascript/모던자바스크립트 Deep Dive 2023. 1. 5. 13:03
p.234 생성자 함수에 의한 객체 생성 : new 연산자로 생성된 객체를 인스턴스 라고 한다. Object 생성자 함수 // 객체리터럴 방식 var obj = {}; // Object 객체 생성자 함수 방식 const newPerson = new Object(); newPerson.name = "woony" newPerson.age = 26 newPerson.sayHello = function () { console.log(`Hi, I'm ${this.name} ${this.age}.`) } newPerson.sayHello() // Hi, I'm woony 26. 📌 new String 과 문자 리터럴(일반선언)은 뭐가 다를까? //이외에도 String Number Boolean Function Ar..
-
자바스크립트 변수의 생명주기, 모듈패턴, var const let 차이Javascript/모던자바스크립트 Deep Dive 2023. 1. 2. 01:26
p.200 변수의 생명주기 전역 변수를 반드시 사용해야 할 이유를 찾지 못한다면 지역 변수를 사용해야 한다. 4.4 "변수 선언의 실행 시점과 변수 호이스팅"에서 살펴보았듯이 변수 선언은 선언문이 어디에 있든 상관없이 가장 먼저 실행된다. 그러나 엄밀히 말하자면 위 설명은 전역 변수에 한정된 것이다. 함수 내부에서 선언한 변수는 함수가 호출된 직후에 함수 몸체의 코드가 한 줄씩 순차적으로 실행되기 이전에 자바스크립트 엔진에 의해 먼저 실행된다. var foo = function () { //변수 x의 생명주기 1.변수 x 생성 var x = 'local'; // 2. 변수 x에 값 할당 console.log(x); return x; // 3. 변수 x 소멸 } Quiz.? var x = 'global';..
-
자바스크립트 스코프, 스코프체인, 함수레벨스코프Javascript/모던자바스크립트 Deep Dive 2023. 1. 1. 15:47
p.189 스코프 : 식별자가 유효한 범위를 말한다. (식별자를 검색하는 규칙) var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. function foo() { var x = 1; var x = 2; console.log(x) //2 } foo(); let 이나 const 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용되지 않는다. function bar() { let x = 1; let x = 2; //SyntaxError: Indentifier 'x' has already been declared } bar(); 스코프의 종류 구분 설명 스코프 변수 전역 코드의 가장 바깥 영역 전역 스코프 전역 변수 지역 함수 몸체 내부 지역 스코프 지역 변수 전역변수는 어디서든지..
-
자바스크립트 원시 값과 객체, 얕은vs깊은 복사, 함수(재귀, 콜백)Javascript/모던자바스크립트 Deep Dive 2022. 12. 31. 00:39
p.137 원시 값과 객체의 비교 원시타입의 값은 변경 불가능한 값이다. (읽기전용 값으로 변경 불가능) 변수는 언제든지 재할당을 통해 변수 값을 변경 할 수 있다. 상수는 재할당이 금지된 변수를 말한다. 상수도 값을 저장하기 위한 메모리 공간이 필요하므로 변수라고 할 수 있다. 단, 변수는 언제든지 재할당을 통해 변수 값을 변경할 수 있지만 ex) var, let 상수는 단 한번만 할당이 허용되므로 변수 값을 변경 할 수 없다. ex) const 변수에 새로운 원시 값을 재할당하면 메모리 공간에 저장되어 있는 재할당 이전의 원시 값을 변경하는 것이 아니라 새로운 메모리 공간을 확보하고 재할당한 원시 값을 저장한 후, 변수는 새롭게 재할당한 원시 값을 가리킨다. 이때 변수가 참조하던 메모리 공간의 주소가..
-
자바스크립트 제어문, 타입변환, 객체Javascript/모던자바스크립트 Deep Dive 2022. 12. 20. 20:04
p.97 Switch문 //switch(표현식) => 표현식의 값과 case의 값이 맞는 문장을 실행하게 된다. switch(3) { case 1: console.log("1") case 2: console.log("2") case 3: console.log("3") } // 3 출력 p.108 타입변환 명시적 타입변환 or 타입캐스팅 //개발자가 의도적으로 변수의 타입을 강제로 변환하는 것을 의미한다. var x = 10; var str = x.toString() 암묵적 타입변환 or 타입강제변환 //자바스크립트 엔진이 암묵적으로 타입을 변환하는 것 '10' + 2 //'102' 문자열 타입이어야 하는 문맥 2 * '10' // 20 숫자 타입이어야 하는 문맥 p.124 객체 리터럴 //person 이..
-
자바스크립트 표현식, 데이터타입, 정적동적타입언어, 삼항조건연산자Javascript/모던자바스크립트 Deep Dive 2022. 12. 19. 17:28
p.50 값과 표현식 그리고 문 값 은 표현식이 평가되어 생성된 결과를 말한다. 표현식 은 값으로 평가될 수 있는 문이다. (즉 표현식이 평가되면 새로운 값을 생성하거나 기존값을 참조한다.) 문 은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다. 문은 여러 토큰으로 구성되어 있으며 토큰이란 문법적인 의미를 가지며 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다. ex) 키워드 식별자 연산자 리터럴 세미콜론 마침표 등 var x; //변수선언문은 값으로 평가될 수 없으므로 표현식이 아니다 x = 1+2; //표현식이면서 완전한 문이기도 하다 p.59 데이터타입 구분 데이터타입 설명 원시타입 숫자 (number) 타입 숫자, 정수와 실수 구분 없이 하나의 숫자타입만 존재 문자 (strin..
-
자바스크립트 실행환경, 변수, 호이스팅, 식별자Javascript/모던자바스크립트 Deep Dive 2022. 12. 18. 21:38
p.17 자바스크립트 실행환경 브라우저 환경 vs Node.js 환경 브라우저 환경 : Html, CSS, 자바스크립트를 실행해 웹페이지를 브라우저 화면에 렌더링하는 것이 주된 목적 DOM API를 기본적으로 제공 Node.js환경 : 노드js 는 외부에서 자바스크립트 실행환경 제공이 주된 목적 파일을 생성하고 수정할 수 있는 파일 시스템을 기본적으로 제공 p.32 const arr = [1,2,3] arr.forEach(alert) Node.js 환경에서 윗 코드를 실행하면 "ReferenceError: alert is not defined" 라는 에러가 발생한다. 이유는 클라이언트 Web API 인 alert 함수를 사용할 수 없기 때문이다. ▶️ 클라이언트 사이드 Web API가 포함된 코드를 실행..